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