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!
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. –
Exactement. Corrigé. Merci –