2011-10-04 62 views
2

I在啓動時創建容器,稍後創建具有Import屬性的對象的實例。當我嘗試使用它時,此屬性爲空。Mef導入組合後創建的對象

MEF如何處理稍後創建的對象。我拒絕相信你必須在啓動時實例化所有對象。

+0

好,我想我可能是誤解MEF如何建立。目錄僅查看出口我猜,我需要創建一個批處理。我很難弄清楚如何從下到上構建一個系統。任何好的教程? –

回答

4

只要創建容器,您就不需要創建實例,這對任何人都沒有任何真正的幫助。你如何創建你的實例?下面是一些例子,給出的例子類:

[Export] 
public class MyClass 
{ 
    [Import] 
    public MyOtherClass OtherClass { get; set; } 
} 

我能:

var myClass = container.GetExportedValue<MyClass>(); // This would automatically compose. 

var myExport = container.GetExport<MyClass>(); 
var myClass = myExport.Value; // This would automatically compose. 

var myClass = new MyClass(); 
container.SatisfyImportsOnce(myClass); // Manually compose your part. 

或手動一起使用CompositionBatch風這一切,等

+1

那麼,當你需要編寫一個新的導入時,你通過所有類傳播你的容器來訪問嗎? –