反射學習系列3 反射例項應用

2021-09-20 13:57:38 字數 908 閱讀 4792

反射學習系列目錄

反射學習系列1-反射入門

反射學習系列2-特性(attribute)

反射學習系列3-反射例項應用

作者例子這個東西其實挺難弄得,弄個簡單的,雖然能說明問題但卻容易讓人覺得沒實用價值,弄個有實用價值卻又往往牽扯很多別的技術甚至牽扯很多業務邏輯,看起來很複雜很難懂。在這裡我盡量追求幾個有實用價值又不複雜的例子。

1、使用反射通過讀取配置檔案來動態的建立相關類的物件

我們先來看看main函式和需要動態載入的物件在同乙個程式集的情況

結構圖:

介面如果在不同的程式集下,那主函式和配置會略有不同

2、外掛程式設計技術

外掛程式是指遵循一定的介面規範、可以動態載入和執行的程式模組。從上面的例子可以看出,通過反射可以非常方便的動態引導程式集。因此,利用反射的動態載入**能力,可以很容易的實現外掛程式。外掛程式設計的要點是使用介面來定義外掛程式的功能特徵。外掛程式的宿主程式通過介面來確認、裝載和執行外掛程式的功能,實現外掛程式功能的所有類都必須實現定義外掛程式的介面。

這裡只是選貼一部分**,詳細分析請看原始碼

結構圖

介面部分

宿主實現

ilog的實現和上例基本一樣,請參考

主程式**

3、分析物件,得到物件中的屬性值

大家使用應都用過asp.net中的dropdownlist,在繫結其值的時候絕大多數情況下我們做的都是同樣的事情,獲得資料來源,根據資料來源中的某些列繫結控制項,下邊我們來說說通用情況的處理方式。我們只需要提供資料集合,以及需要繫結到控制項的兩個屬性(text,value)名即可。

反射學習系列

您清晰的元件化目標是否因在庫間共享過多型別資訊而落空?或許您需要高效的強型別化資料儲存,但如果每次物件模型發展後都需要更新您的資料庫架構,那會耗費很大成本,所以您更願意在執行時推斷出其型別架構嗎?您需要交付能接受任意使用者物件的元件,並以某種智慧型化的方式處理它們嗎?您希望庫的調方者能以程式設計方式...

反射學習系列1 反射入門

反射學習系列目錄 反射學習系列1 反射入門 反射學習系列2 特性 attribute 反射學習系列3 反射例項應用 作者 reflection,中文翻譯為反射。這是.net中獲取執行時型別資訊的方式,net的應用程式由幾個部分 程式集 assembly 模組 module 型別 class 組成,而...

反射學習系列1 反射入門

反射學習系列目錄 反射學習系列1 反射入門 反射學習系列2 特性 attribute 反射學習系列3 反射例項應用 作者 reflection,中文翻譯為反射。這是.net中獲取執行時型別資訊的方式,net的應用程式由幾個部分 程式集 assembly 模組 module 型別 class 組成,而...