看起来MEF框架创建了具有默认CTOR的对象。如何使用参数自定义CTOR或Constructor?例如:
[Export (typeof(IInterface1))]
public class MyClass : IInterface1
{
public MyClass(int id) {....}
....
}
如果没有,我可以想到的一种方法是将对象作为参数传递给CTOR。例如:
public Interface IParameterID { public int Id {get;私人集; } ... }
然后,CTOR将是:
public MyClass([Import(typeof(IParameter))] IParameterID id)
{ ... }
不确定是否可以在CTOR的参数中添加属性?接下来的问题是,如果MEF会自动创建一个IParameter实例并将其注入CTOR的参数?
答案 0 :(得分:4)
是的,这是可能的。只需在您想要使用的构造函数上放置一个[ImportingConstructorAttribute]。参数将自动视为导入,但如果您需要更改它们的合同名称,您还可以在其上添加导入属性。