我希望指定一个具体类型(MyType1),使用传递给构造函数的特定func
进行实例化。
构造函数是:
public MyTYpe1(Func<Type1, Type2> myFunc)
{
//...
}
如何在StructureMap XML配置文件中指定myFunc
参数?
注意,我希望将myFunc
传递给另一种类型的静态方法(MyType2.MyMethod)。如果我在代码中构造MyType1,它将是:
var instance = new MyType1(MyType2.MyMethod);
答案 0 :(得分:0)
您可以在XML文件中编写类的名称和方法的名称。
然后,在运行时,通过反射,您将获得该方法的MethodInfo:
var method = Type.GetType(nameOfClass).GetMethod(nameOfMethod);
然后你传递一个调用该方法的lambda:
var instance = new MyType1<Type1, Type2>(x => (Type2)method.Invoke(null, x));
null参数用于静态方法。
答案 1 :(得分:0)
StructureMap不支持通过配置文件指定构造函数的选项(至少在2.6.4.1之前)。默认情况下,总是在通过XML文件配置配置的依赖项时,StructureMap始终选择最贪婪的构造函数。为克服此限制,必须将此类依赖项放在注册表中。