2011-02-17 16 views
5

我希望這個問題有道理。基本上,我正在尋找一套準則,甚至是一個教程,它將展示如何創建一個可以輕鬆添加和刪除「模塊」或「加載項」的應用程序。例如,在Microsoft Office中,您通常會看到您可以下載和安裝的程序,並且只會在Microsoft Word中添加一個額外的選項卡(例如),以實現一些新功能。如何製作接受模塊/加載項的「儀表板」實用程序

我有幾個應用程序使用基本相同的數據源,並且我想整合它們,並且在將來不需要添加更多功能的情況下也可以開放。1.需要全新的安裝和2.調整每個一塊我的代碼。

我在找一個地方開始,主要是。

在此先感謝。

**

編輯:更詳細地說明了一點...... 我在想的事情特別是訪問大數據集存儲在文本文件中,並使用一些的應用這些數據可以創建一些圖表或者一些表格。我希望能夠使用相同的數據在將來添加不同的圖形。因此,您可以單擊Button_A並生成Graph_A,幾周後,您可以單擊Button_B並生成Graph_B。

如果我能想出一種只需要從文件中讀取數據的方法,那將是非常好的,但我知道這將涉及不得不調整我的DataReader類。

回答

3

開始的一個地方是爲未來的模塊定義一個接口,並構建一個實用程序來掃描其中的所有dll,查找實現所述接口的類。

一旦找到支持類,您可以在運行時創建實例並添加到您的應用程序中。這是.NET中用於支持「插件」的常用成語。

Activator類是在運行時從Type創建實例的常用方法。

http://msdn.microsoft.com/en-us/library/system.activator.aspx

很難給予更多的細節,而不會在你的問題的更多信息。你能詳細說一下嗎?

+0

我想補充一點,這也可以用更通用的插件系統解釋。這不是一個簡單的解決方案,你可以很快遇到麻煩。(我找不到任何通用教程atm) – Aatch 2011-02-17 02:55:57

+0

當然,我編輯包括更多的信息。 – Eric 2011-02-17 03:08:45

2

正如亞當所說,首先要做的是爲插件模塊定義接口 - 他們期望從容器接收什麼,以及容器能夠調用哪些方法?

就容器本身而言,我偏愛MEF作爲定位技術;您可以創建目錄並在添加新DLL時重新編寫系統。我已經構建了一個類似的系統來解析不相似的文件,並且MEF的組合功能對於運行時發現非常棒。