Как мне указать параметр конструктора в XML-файле конфигурации StructureMap? - PullRequest
1 голос
/ 30 июня 2010

Я хочу указать конкретный тип (MyType1), для которого создается конкретный func, переданный в конструктор.

Конструктор:

 public MyTYpe1(Func<Type1, Type2> myFunc)
 {
    //...
 }

Как указать параметр myFunc в XML-файле конфигурации StructureMap?

Обратите внимание, я хочу передать в myFunc статический метод другого типа (MyType2.MyMethod). Если бы я должен был создать MyType1 в коде, это было бы:

var instance = new MyType1(MyType2.MyMethod);

Ответы [ 2 ]

0 голосов
/ 06 марта 2013

StructureMap не поддерживает опцию указания Конструктора через файл конфигурации (по крайней мере, до 2.6.4.1). По умолчанию и всегда, когда настроенная зависимость настраивается через файл XML, StructureMap всегда выбирает самый жадный конструктор. Чтобы преодолеть это ограничение, такие зависимости должны быть внесены в реестр.

0 голосов
/ 30 июня 2010

Вы можете написать имя класса и имя метода в файле XML.

Затем во время выполнения через отражение вы получите MethodInfo для этого метода:

var method = Type.GetType(nameOfClass).GetMethod(nameOfMethod);

тогда вы передаете лямбду, которая вызывала этот метод:

var instance = new MyType1<Type1, Type2>(x => (Type2)method.Invoke(null, x));

Нулевой параметр используется для статических методов.

...