一、什麼是反射
反射是說在電腦程式在執行時(run time)可以訪問、檢測和修改它本身狀態或行為的一種能力。通俗的講,反射就是程式在執行時能夠「觀察」並且修改自己的行為。
二、反射跟內省(type introspection)的關係
1、內省
指程式在執行時對自身資訊(元資料)的檢測。
2、反射
在除了在執行時對程式自身資訊進行檢測之外,還要求程式能進行進一步的根據這些資訊跟變程式的狀態或結構。
三、反射的優缺點
1、優點
ø 可以在一定程度上避免硬編碼,提供靈活性和通用性。
ø 降低程式耦合性,提高了自適應能力。
ø 允許程式提供建立和控制任何類的對物件,不需要提前硬編碼目標類。
ø 可以作為乙個第乙個類物件發現並修改源**的結構(如**塊、類、方法、協議等)
ø 可以在執行時像對待源**語句一樣計算符號語法的字串,進而可將class或function匹配的字串轉換成class或function的呼叫或引用。
ø 可以建立乙個新的語言位元組碼直譯器來給程式設計結構乙個新的意義或用途。
2、缺點
ø 學習成本高。
ø 過多的濫用反射技術會使**不易被別人讀懂(不利於合作交流)。
ø 由於將部分資訊檢查工作從便以其推遲到了執行期,所以這種方式在提高了**靈活性的同時,犧牲了少部分的執行效率。
ø 反射繞過了源**的技術,這使得程式內部邏輯模糊。不易於程式後期的維護。
四、c#中反射的用途。
ø 允許在執行時檢視特性(attribute)資訊。
ø 允許審查集合中的各種型別,以及例項化這些型別。
ø 允許延遲繫結的方法和屬性(property)。
ø 允許在執行時建立新型別。然後使用這些新型別執行一些任務。
C 反射機制
反射的概述 反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 syste...
C 反射機制
反射的定義 審查元資料並收集關於它的型別資訊的能力。元資料 編譯以後的最基本資料單元 就是一大堆的表,當編譯程式集或者模組時,編譯器會建立乙個類定義表,乙個字段定義表,和乙個方法定義表等。system.reflection命名空間包含的幾個類,允許你反射 解析 這些元資料表的 system.refl...
C 反射機制
參考 本文的實現基於上述部落格中的 修改而來。本文實現的反射機制,其實就是根據字串,構造乙個類物件 classinfo是記錄類名與其相應的工廠函式 dynbase是實現反射機制的公共基類,每個繼承它的子類需要在建構函式中傳遞其類名的字串給dynbase的建構函式 templateclass dynb...