反射(提供封裝程式集、模組和類型的對象)

反射(提供封裝程式集、模組和類型的對象)

反射是一種計算機處理方式。有程式可以訪問、檢測和修改它本身狀態或行為的這種能力。能提供封裝程式集、類型的對象。(程式集包含模組,而模組包含類型,類型又包含成員。)

基本介紹

  • 中文名:反射
  • 外文名:reflection
  • 基本釋義:提供封裝程式集、類型的對象
  • 性質:計算機術語
  • 套用領域:軟體工程
用途
您可以使用反射動態地創建類型的實例,將類型綁定到現有對象,或從現有對象中獲取類型。然後,可以調用類型的方法或訪問其欄位和屬性。
1.使用 Assembly 定義和載入程式集,載入在程式集清單中列出的模組,以及從此程式集中查找類型並創建該類型的實例。
2.使用 Module 了解如下的類似信息:包含模組的程式集以及模組中的類等。您還可以獲取在模組上定義的所有全局方法或其他特定的非全局方法。
3.使用 ConstructorInfo 了解如下的類似信息構造函式的名稱、參數、訪問修飾符(如 public 或 private)和實現詳細信息(如 abstract 或 virtual)等。
4.使用 Type 的 GetConstructors 或 GetConstructor 方法來調用特定的構造函式。
5.使用 MethodInfo 來了解如下的類似信息:方法的名稱、返回類型、參數、訪問修飾符(如 public 或 private)和實現詳細信 息(如 abstract 或 virtual)等。使用 Type 的 GetMethods 或 GetMethod 方法來調用特定的方法。
6.使用 FieldInfo 來了解如下的類似信息:欄位的名稱、訪問修飾符(如 public 或 private)和實現詳細信息(如 static)等;並獲取或設定欄位值。
7.使用 EventInfo 來了解如下的類似信息:事件的名稱、事件處理程式數據類型、自定義屬性、聲明類型和反射類型等;並添加或移除事件處理程式。
8.使用 PropertyInfo 來了解如下的類似信息:屬性的名稱、數據類型、聲明類型、反射類型和唯讀或可寫狀態等;並獲取或設定屬性值。
9.使用 ParameterInfo 來了解如下的類似信息:參數的名稱、數據類型、參數是輸入參數還是輸出參數,以及參數在方法簽名中的位置等。
優點:
1、反射提高了程式的靈活性和擴展性。
2、降低耦合性,提高自適應能力。
3、它允許程式創建和控制任何類的對象,無需提前硬編碼目標類。
缺點:
1、性能問題:使用反射基本上是一種解釋操作,用於欄位和方法接入時要遠慢於直接代碼。因此反射機制主要套用在對靈活性和拓展性要求很高的系統框架上,普通程式不建議使用。
2、使用反射會模糊程式內部邏輯;程式設計師希望在原始碼中看到程式的邏輯,反射卻繞過了原始碼的技術,因而會帶來維護的問題,反射代碼比相應的直接代碼更複雜。

相關詞條

熱門詞條

聯絡我們