2009-10-24 43 views
3

它看起來像MEF框架創建具有默認CTOR的對象。如何定製CTOR或帶參數的構造函數?例如:MEF支持定製CTOR嗎?

[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的參數中?

回答

4

是的,這是可能的。只需將[ImportingConstructorAttribute]放在您想要使用的構造函數上即可。這些參數將被自動視爲導入,但如果您需要更改它們的合同名稱,則還可以在其中輸入一個導入屬性。