在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
对象,你需要先创建该类型的实例。