Карта структуры и дженерики (в конфигурации XML) - PullRequest
0 голосов
/ 08 октября 2009

Я использую последнюю версию StructureMap (2.5.4.264), и мне нужно определить некоторые экземпляры в конфигурации xml для StructureMap с использованием шаблонов. Однако я получаю следующую ошибку 103:

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)

Простая репликация кода выглядит следующим образом:

 public interface ITest<T>
 {
 }

 public class Test
 {
 }

 public class Concrete : ITest<Test>
 {
 }

Что я затем хочу определить в конфигурации XML следующим образом:

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

Я ломал голову, но я не вижу, что я делаю неправильно - я использовал Type.GetType, чтобы убедиться, что тип действительно действителен. У кого-нибудь есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 08 октября 2009

Это ошибка, которая существует в StructureMap 2.5.x и ниже. Это исправлено в ревизии 269 в транке и будет доступно в выпуске StructureMap 2.6.

...