我开始使用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