【发布时间】:2010-05-31 02:55:10
【问题描述】:
我开始使用 MEF,并且我有一个具有多个构造函数的类,如下所示:
[Export(typeof(ifoo))]
class foo : ifoo {
void foo() { ... }
[ImportingConstructor]
void foo(object par1) { ... }
}
我在撰写时使用catalog.ComposeExportedValue() 来提供par1
第二个构造函数的值:
...
catalog.ComposeExportedValue(par1Value);
catalog.ComposeParts(this);
...
保存我正在使用的组件:
[ImportMany(typeof(ifoo))]
public List<Lazy<ifoo, ifoometadata>> FooList { get; set; }
为了创建 foo 实例,我使用了 value 属性 FooList[0].Value。
一切正常,除了 foo 类的第二个构造函数从未被调用。怎么了?
MEF实例化类时如何选择要使用的构造函数?
【问题讨论】:
-
看看stackoverflow.com/questions/2008133/mef-constructor-injection ...这不是完全同一个问题,但接受的答案为导入构造函数提供了一些线索,这可能会有所帮助。
-
是的,事实上我正在使用 Daniel Plaisted 的答案,问题是我找不到使用多个构造函数定义创建 mef 实例的任何示例。
标签: c# .net mef multiple-constructors