2009-10-08 7 views
0

J'utilise le dernier StructureMap (2.5.4.264), et j'ai besoin de définir des instances dans la configuration xml de StructureMap en utilisant des génériques. Cependant, je reçois les éléments suivants 103 Erreur:Structure et génériques (dans la configuration XML)

Unhandled Exception: StructureMap.Exceptions.StructureMapConfigurationException: StructureMap configuration failures: 
Error: 103 
Source: 
Requested PluginType MyTest.ITest`1[[MyTest.Test,MyTest]] configured in Xml cannot be found 

Could not create a Type for 'MyTest.ITest`1[[MyTest.Test,MyTest]]' 
System.ApplicationException: Could not create a Type for 'MyTest.ITest`1[[MyTest.Test,MyTest]]' ---> System.TypeLoadException: Could not loa 
d type 'MyTest.ITest`1' from assembly 'StructureMap, Version=2.5.4.264, Culture=neutral, PublicKeyToken=e60ad81abae3c223'. 
    at System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& 
stackMark, Boolean loadTypeFromPartialName) 
    at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& 
stackMark) 
    at System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& s 
tackMark) 
    at System.Type.GetType(String typeName, Boolean throwOnError) 
    at StructureMap.Graph.TypePath.FindType() 
    --- End of inner exception stack trace --- 
    at StructureMap.Graph.TypePath.FindType() 
    at StructureMap.Configuration.GraphBuilder.ConfigureFamily(TypePath pluginTypePath, Action`1 action) 

Une simple réplication du code est le suivant:

public interface ITest<T> 
{ 
} 

public class Test 
{ 
} 

public class Concrete : ITest<Test> 
{ 
} 

que je souhaite alors de définir dans la configuration XML quelque chose comme suit:

<DefaultInstance 
    PluginType="MyTest.ITest`1[[MyTest.Test,MyTest]],MyTest" 
    PluggedType="MyTest.Concrete,MyTest" 
    Scope="Singleton" 
/> 

J'ai creusé mon cerveau, mais je ne vois pas ce que je fais de mal - j'ai utilisé Type.GetType pour vérifier que le type est valide. Quelqu'un a des idées?

Merci!

+0

Il semblerait que les génériques de votre exemple ne soient pas arrivés correctement. Assurez-vous de formater tout le code avec le formateur de code de stackoverflow - y compris vos déclarations de classe et d'interface. –

+0

Exactement. Corrigé. Merci –

Répondre

0

Il s'agit d'un bogue existant dans StructureMap 2.5.x et ci-dessous. Il a été corrigé dans la révision 269 dans le trunk et sera disponible dans la version 2.6 de StructureMap.

+0

Parfait merci beaucoup! –

Questions connexes