Reflection(反射)是 .NET 獲取執行期型別資訊的機制。應用程式由組件、模組、型別組成,反射提供程式化方式在執行期存取這些構成要素的資訊。核心類別位於 System.Reflection:Assembly、Type、MethodInfo、FieldInfo、EventInfo 等。
System.Type 是反射核心。CLR 為每個被反射請求的型別建立一個 Type 物件,透過其方法、欄位、屬性、巢狀類別可查詢該型別所有資訊。
MyClass m = new MyClass();
Type type = m.GetType();
Console.WriteLine("型別名:" + type.Name);
Console.WriteLine("型別全名:" + type.FullName);
Console.WriteLine("命名空間:" + type.Namespace);
Console.WriteLine("組件名:" + type.Assembly);
Console.WriteLine("模組名:" + type.Module);
Console.WriteLine("基底類別:" + type.BaseType);
Console.WriteLine("是否為類別:" + type.IsClass);
Console.WriteLine("類別公用成員:");
MemberInfo[] members = type.GetMembers();
foreach (var item in members)
Console.WriteLine("{0}:{1}", item.MemberType, item);
程式會列出 MyClass 的所有公用成員(欄位、方法、屬性),並顯示其 MemberType 與完整簽章。這是反射探索未知型別結構的基礎技術。