標籤:
通過 System.Reflection 命名空間中的類以及System.Type,您可以擷取有關已載入的程式集和在其中定義的類型(如類、介面和值類型)的資訊。您也可以使用反射在運行時建立類型執行個體,以及調用和訪問這些執行個體。
反射是一個程式集發現及啟動並執行過程,通過反射可以得到*.exe或*.dll等程式集內部的資訊。使用反射可以看到一個程式集內部的介面、類、方法、欄位、屬性、特性等資訊。在System.Reflection命名空間內包含多個反射常用的類,下面表格列出了常用的幾個類。
使用 Assembly 定義和載入程式集,載入在資訊清單中列出的模組,以及從此程式集中尋找類型並建立該類型的執行個體。
使用 Module 發現以下資訊:包含模組的程式集以及模組中的類等。您還可以擷取在模組上定義的所有全域方法或其他特定的非全域方法。
使用 ConstructorInfo 發現以下資訊:建構函式的名稱、參數、存取修飾詞(如public 或 private)和實現詳細資料(如abstract 或 virtual)等。使用 Type 的GetConstructors 或GetConstructor 方法來調用特定的建構函式。
使用 MethodInfo 發現以下資訊:方法的名稱、傳回型別、參數、存取修飾詞(如public 或 private)和實現詳細資料(如abstract 或 virtual)等。使用 Type 的GetMethods 或GetMethod 方法來調用特定的方法。
使用 FieldInfo 發現以下資訊:欄位的名稱、存取修飾詞(如public 或 private)和實現詳細資料(如static)等;並擷取或設定欄位值。
使用 EventInfo 發現以下資訊:事件的名稱、事件處理常式資料類型、自訂特性、宣告類型和反射類型等;並添加或移除事件處理常式。
使用 PropertyInfo 發現以下資訊:屬性的名稱、資料類型、宣告類型、反射類型和唯讀或可寫狀態等;並擷取或設定屬性值。
使用 ParameterInfo 發現以下資訊:參數的名稱、資料類型、參數是輸入參數還是輸出參數,以及參數在方法簽名中的位置等。
當您在一個應用程式定義域的僅反射內容中工作時,請使用 CustomAttributeData 來發現有關自訂特性的資訊。通過使用 CustomAttributeData,您不必建立特性的執行個體就可以檢查它們。
可以參看http://blog.csdn.net/lyncai/article/details/8621880
C# 反射