我正在編寫一個包含不同程序集中的插件系統的應用程序。在程序集間使用應用程序設置
問題是插件系統需要從主應用程序中獲取應用程序設置(如尋找插件的目錄)。
這是怎麼完成的,還是我以這種錯誤的方式去做?
編輯:我被鼓勵添加一些關於插件系統如何工作的細節。我還沒有完全解決這個問題,我只是開始實施它,但我基本上是通過this article。
我正在編寫一個包含不同程序集中的插件系統的應用程序。在程序集間使用應用程序設置
問題是插件系統需要從主應用程序中獲取應用程序設置(如尋找插件的目錄)。
這是怎麼完成的,還是我以這種錯誤的方式去做?
編輯:我被鼓勵添加一些關於插件系統如何工作的細節。我還沒有完全解決這個問題,我只是開始實施它,但我基本上是通過this article。
讓主應用程序從應用程序設置中獲取插件目錄並將其插入插件系統。
也許你可以在創建插件時插入配置作爲參數?
//Get the configuration for the current appDomain
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//Create the plugin, and pass in the configuration
IPlugin myPlugin = new AlfaPlugin(config);
您可能需要對System.Configuration程序集的引用。
這正是我所說的...... – EricSchaefer 2008-11-15 23:07:04
您可以編寫自定義配置部分,該部分允許您編寫表示XML模式的對象。一旦建立,您可以簡單地詢問該部分的當前實例。
您可以通過從System.Configuration.ConfigurationSection
派生並寫入代表屬性和子元素的屬性來完成此操作。有關更多信息,請參閱How to: Create Custom Configuration Sections Using ConfigurationSection。
運行庫的AppDomain是當前的配置範圍。 System.Configuration
命名空間將所有配置文件關聯起來,並呈現一個統一的視圖。
要檢索節的當前實例,可以使用ConfigurationManager.GetSection(...)
。
您的插件應該接受本節的一個實例,而不是一般的Configuration
對象。
您可能想要添加一些關於插件系統如何工作的細節。有很多不同的方式來處理主應用程序和插件之間的雙向通信。 – MusiGenesis 2008-11-15 22:48:12