我開始使用MEF,和我有多個構造一類,像這樣:與多個構造MEF構造函數的參數
[Export(typeof(ifoo))]
class foo : ifoo {
void foo() { ... }
[ImportingConstructor]
void foo(object par1) { ... }
}
組成供應par1
值第二,當我使用catalog.ComposeExportedValue()
構造函數:
...
catalog.ComposeExportedValue(par1Value);
catalog.ComposeParts(this);
...
要保持組件我使用:
[ImportMany(typeof(ifoo))]
public List<Lazy<ifoo, ifoometadata>> FooList { get; set; }
而要創建foo
實例,我使用的是value屬性FooList[0].Value
。
寄託都工作得很好,除了foo
類的第二個構造函數永遠不會被調用。怎麼了?
如何選擇我想使用的時候MEF實例化類的構造函數?
看一看http://stackoverflow.com/questions/2008133/mef-constructor-injection ......這是不是*完全相同的問題,但接受的答案對導入構造函數有一些幫助。 – 2010-05-31 03:12:50
是的,實際上我使用Daniel Plaisted的答案,問題是我找不到使用多個構造函數定義創建mef實例的任何示例。 – InterWAS 2010-05-31 14:17:20