2010-06-30 46 views
1

我希望指定一個具體類型(MyType1),通過傳遞給構造函數的具體func實例化。如何在StructureMap XML配置文件中指定構造函數參數?

的構造是:

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

如何指定在StructureMap XML配置文件myFunc PARAM?

請注意,我希望將myFunc傳遞給另一種類型的靜態方法(MyType2.MyMethod)。如果我要在代碼中構造MyType1,它將是:

var instance = new MyType1(MyType2.MyMethod); 

回答

0

您可以在XML文件中編寫類的名稱和方法的名稱。

然後,在運行時,通過反射,你會得到一個MethodInfo該方法:

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

那麼你傳遞調用該​​方法的拉姆達:

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

空參數使用用於靜態方法。

+0

我正在尋找XML配置。我期望像(pseudo-xml)這樣的東西:「這個接口的具體類型是這個,這個方法傳遞給構造函數」。配置後,我希望StructureMap tp會自動實例化MyType1的實例並在xml中定義func。這有意義嗎? – Ben 2010-06-30 11:21:50

0

StructureMap不支持通過配置文件指定構造函數的選項(至少到2.6.4.1)。默認情況下,當通過XML文件配置依賴關係時,StructureMap始終選擇最貪婪的構造函數。爲了克服這個限制,這些依賴關係必須放在註冊表中。

相關問題