反映 (C# 程式設計手冊)
反映 (Reflection) 會提供 Type 型別的物件,用來封裝組件、模組和型別。您可以使用反映來動態建立型別的執行個體、將型別繫結至現有物件,或從現有物件取得型別,並叫用其方法或存取其欄位和屬性。如果您在程式碼中使用屬性 (Attribute),反映可讓您存取這些屬性。如需詳細資訊,請參閱屬性。
這裡有一個簡單的反映範例,使用 Object 基底類別所有型別繼承的靜態方法 GetType,來取得變數的型別:
// Using GetType to obtain type information:
int i = 42;
System.Type type = i.GetType();
System.Console.WriteLine(type);
輸出如下:
System.Int32
在這個範例中,會使用反映來取得已載入組件的完整名稱:
// Using Reflection to get information from an Assembly:
System.Reflection.Assembly o = System.Reflection.Assembly.Load("mscorlib.dll");
System.Console.WriteLine(o.GetName());
輸出如下:
mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
反映概觀
在下列狀況中,反映會十分有用:
當您需要存取程式中繼資料的屬性。請參閱使用反映存取屬性主題。
檢查與執行個體化組件中的型別。
在執行階段建置新型別。請使用 System.Reflection.Emit 中的類別。
執行晚期繫結,存取在執行階段所建立型別的方法。請參閱動態載入和使用型別主題。
相關章節
如需詳細資訊:
System.Reflection.Emit
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
1.12 屬性
7.5.11 typeof 運算子