標籤:
原文 如何通過反射實現動態功能模組載入
程式集包含模組,而模組包含類型,類型又包含成員。反射則提供了封裝程式集、模組和類型的對象。您可以使用反射動態地建立類型的執行個體,將類型綁定到現有對象,或從現有對象中擷取類型。然後,可以調用類型的方法或訪問其欄位和屬性。
下面我們將介紹如何通過不使用反射的方式和使用反射的方式載入功能模組。實現效果:
1. WinForm 主程式
主程式我們使用Winform程式,VS2008 工具C#語言開發。包括工具列、狀態列及TabControl控制項。我們使用TabControl 作為功能模組容器,裝載各個功能模組。實現效果如下:
2. 不使用反射方式載入功能
新增資訊資料功能模組項目,項目增加資料管理(UCCustomerInfo)使用者控制項。資料管理顯示、載入、匯入、匯出資料功能。
2.1. WinForm 主程式調用
WinForm 添加資料管理項目引用。點擊資訊資料時,執行個體資料管理功能模組進行載入。
3. 使用反射方式載入功能
使用反射方式載入功能,需要定義功能模組介面、設計配置功能模組、主程式讀取設定檔動態載入功能模組。
3.1. 定義功能模組介面
功能模組介面(UCModule)定義為使用者控制項(UserControl),虛擬兩方法,供具體功能模組進行重寫。
3.2. 實現功能模組執行個體
功能模組還是前資訊資料管理功能,但不是繼承使用者控制項(UserControl),而是繼承功能模組介面(UCModule)。
3.3. 設計功能模組配置
功能模組配置採用xml檔案定義,定義為:模組編號、模組名稱、模組項目、模組對象。
3.4. 通過配置動態功能模組
讀取功能模組配置,返回系統定義的功能模組列表。增加工具列按鈕,點擊工具列按鈕時,載入配置的功能模組項目。
至此,如何通過反射動態載入功能模組已講解完畢。從兩樣本實現的方式,我們可明顯看出,採用動態載入的方式,比直接使用的方式還是要複雜得多,所以小型項目、團隊成員不多的情況下,還是建議不使用反射比較好。
[轉] 通過反射實現動態功能模組載入