如何在StructureMap XML配置文件中指定构造函数参数?

时间:2010-06-30 11:01:29

标签: c# structuremap

我希望指定一个具体类型(MyType1),使用传递给构造函数的特定func进行实例化。

构造函数是:

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

如何在StructureMap XML配置文件中指定myFunc参数?

注意,我希望将myFunc传递给另一种类型的静态方法(MyType2.MyMethod)。如果我在代码中构造MyType1,它将是:

var instance = new MyType1(MyType2.MyMethod);

2 个答案:

答案 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始终选择最贪婪的构造函数。为克服此限制,必须将此类依赖项放在注册表中。