2011-06-03 78 views
2

目前我已處理自己的進口的所有類。用一個典型的例子:集中MEF組合

[ImportMany] 
private Lazy<ISomeInterface>[] someOfMyInterfaces { get; set; } 
public MyConstructor() 
{ 
    AssemblyCatalog catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly()); 
    CompositionContainer container = new CompositionContainer(catalog); 
    container.ComposeParts(this); 
} 

現在,我想用一個總目錄和需要改變我所有的類,採取進口的實現。我想把這個邏輯放在一個集中的地方。基本上消除我的課程的依賴組成他們自己的部分。有沒有什麼好的模式可以實現這個目標?

回答

1

是的,你絕對不想在每個部件中創建一個容器。相反,試圖讓每一個導入的部分都有一個導出另一部分的導出。然後在你的啓動代碼中創建一個容器,並從中取出一個根導出,這將導致所有其他部分被創建,並且在需要時導入它們的導入。

+0

謝謝。我之前遇到過,但我沒有意識到發生了什麼事。我找到了一個例子,但仍然希望看到更多。 http://randomactsofcoding.blogspot.com/2009/12/managing-composition-through-lazy.html – jhorback 2011-06-04 00:02:23