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