2011-03-21 71 views
0

我對Codeplex閱讀MEF文件,我試圖找出如何完成我的任務:MEF - 使用相同的插件幾次

我想建立一個有標準組件的應用程序框架,可以用來做一些常見的工作(如顯示數據庫中的記錄列表)。插件應該每次重複使用不同的配置。 (例如,我在應用程序中顯示了5個窗口,其中顯示記錄列表,每個窗口都有不同類型的實體,不同的列,每個窗口都應該有它自己的擴展點,例如用於顯示記錄詳細信息,這些記錄詳細信息應該與另一個常見副本插入)。

是MEF適合這樣的場景?我應該如何定義合同?我應該使用元數據嗎?我可以使用配置文件定義關係嗎?

回答

2

是的,你可以使用MEF。 MEF支持使用PartCreationPolicy屬性對象的非共享實例:在這個here

[PartCreationPolicy(CreationPolicy.NonShared)] 

更多信息。

我個人倒組件的目標上的進口後,應進行接線和配置。但是我不確定你想要你的應用程序有多普遍,如果你正在做一個'框架'來做某些解決方案,我可以想象你想要配置是分開的。你可以全盤通過並創建一個ISuperDuperGridConfiguration並將它們導入到Grid插件的構造函數[ImportingConstructor]中。從您的目標中(網格被導入的位置)將網格的位置設置爲網格插件(如主網格,邊網格),並使用存儲在ISuperDuperGridConfiguration中的數據進一步配置網格插件本身。

但是,你可以輕鬆地去「過了頭」與MEF,這取決於你的目標。我們有一個完全MEF組件化的用戶界面,用於爲每個客戶定製需求的應用程序。有時候,我有強迫將功能區中的單個按鈕放在MEF擴展中的衝動。

正如你所看到的,根據你的需要,你可以有時會走得太遠。

我不認爲你需要的元數據特別是在你的情況,但也許別人可以分享這個;-)不同的意見。

我希望這回答了你的問題,如果不是請評論,所以我可以強調更多的方面。總而言之,使用MEF對我們來說非常積極,而且我們正在使用它遠遠超過「你好世界」。所以至少你有這個!

+0

Kubal5003:您是否需要更多信息才能接受此答案?我很樂意提供。 – 2011-03-24 23:16:27