2011-10-06 40 views
6

利用在plugin2在plugin1可用方法我有一個控制檯基於MEF應用程序,它的加載基於命令行參數可用的插件組件,例如主機(CompositionContainer):經由MEF

app.exe plugin1 

將加載主機(app.exe)和plugin1。 VS解決方案的結構使得每個插件都有自己的項目(因此它是自己的組件)。

存在一組插件,其中一些插件有重用代碼的機會。因此,例如plugin1有一個方法CopyFiles(string fileName),並且相同的功能將由plugin2使用。

現在,在傳統的控制檯應用程序中,可以添加對plugin1.dll的引用,並通過使用該命名空間去了解它的重用業務。

我很好奇,如果您有實施這種重複使用的「MEF」方式。因此,通過在plugin2中創建plugin1對象的方式,可以通過將Import屬性添加到plugin1's可導出的界面,並讓MEF負責其餘部分。那可能嗎?如果是這樣,怎麼樣?

或者當設計這樣的應用程序時應該採取更好的方法嗎?獎金伏都教給任何有用的學習資源和解釋的指針。

謝謝!

回答

2

如果您要共享的方法是plugin1,那麼您應該使用Exportplugin1。如果您只是想分享該方法,您也可以使用Export方法。

plugin2Import plugin1。 MEF會負責其餘的事情。如果你從命令行得到你的程序集併爲plugin1創建了一個AssemblyCatalog,那麼你還需要告訴它關於plugin2並將其轉換爲AggregateCatalog,或者將它們全部放在一個目錄中並使用DirectoryCatalog(你可以通過命令行中的目錄名稱)。

MEF Programming Guide涵蓋了類似的情況。

還有在MEF的Hands-on-Labs在Visual Studio 2010 and .NET Framework 4 Training Kit這是有幫助的。