在C#中,GetType()
方法用于獲取一個對象的類型信息。當你對一個對象調用GetType()
方法時,它會返回一個表示該對象類型的Type
對象。這個Type
對象包含了關于類型的元數據信息,如類型名稱、基類、接口、字段、方法等。
以下是一些你可以通過Type
對象獲取的成員:
Name
屬性獲取類型的名稱。Type type = typeof(int);
string typeName = type.Name; // "int"
BaseType
屬性獲取類型的基類。Type type = typeof(int);
Type baseType = type.BaseType; // null,因為int沒有基類
GetInterfaces()
方法獲取類型實現的所有接口。Type type = typeof(List<int>);
Type[] interfaces = type.GetInterfaces(); // 包括IList, ICollection等
GetFields()
方法獲取類型的字段(包括私有、受保護、公共和靜態字段)。Type type = typeof(int);
FieldInfo[] fields = type.GetFields(); // 只包括公共字段,不包括私有等
GetMethods()
方法獲取類型的方法(包括公共、受保護、私有和靜態方法)。Type type = typeof(int);
MethodInfo[] methods = type.GetMethods(); // 只包括公共方法,不包括私有等
GetProperties()
方法獲取類型的屬性(包括公共、受保護、私有和靜態屬性)。Type type = typeof(int);
PropertyInfo[] properties = type.GetProperties(); // 只包括公共屬性,不包括私有等
GetConstructor()
和GetConstructors()
方法獲取類型的構造函數。Type type = typeof(int);
ConstructorInfo[] constructors = type.GetConstructors(); // 沒有公共構造函數,因為int是值類型
Type
類還提供了許多其他方法來獲取類型的成員,如GetEventMethods()
, GetIndexerProperties()
, GetNestedTypes()
, GetCustomAttributes()
等。請注意,GetType()
方法是在運行時確定的,因此它只能獲取已經存在的對象的實際類型。如果你嘗試獲取一個未實例化的類型的Type
對象,你需要先創建該類型的實例。