Type 类

表示类型声明:类类型、接口类型、数组类型、值类型、枚举类型、类型参数、泛型类型定义,以及开放或封闭构造的泛型类型。

**命名空间:**System
**程序集:**mscorlib(在 mscorlib.dll 中)

语法

声明
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public MustInherit Class Type
    Inherits MemberInfo
    Implements _Type, IReflect
用法
Dim instance As Type
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
public abstract class Type : MemberInfo, _Type, IReflect
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
[ClassInterfaceAttribute(ClassInterfaceType::None)] 
public ref class Type abstract : public MemberInfo, _Type, IReflect
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
public abstract class Type extends MemberInfo implements _Type, IReflect
SerializableAttribute 
ComVisibleAttribute(true) 
ClassInterfaceAttribute(ClassInterfaceType.None) 
public abstract class Type extends MemberInfo implements _Type, IReflect

备注

TypeSystem.Reflection 功能的根,也是访问元数据的主要方式。使用 Type 的成员获取关于类型声明的信息,如构造函数、方法、字段、属性 (Property) 和类的事件,以及在其中部署该类的模块和程序集。

表示某个类型是唯一的 Type 对象;即,两个 Type 对象引用当且仅当它们表示相同的类型时,才引用相同的对象。这允许使用参考等式来比较 Type 对象。

如果没有 ReflectionPermission,代码只能访问已加载程序集的公共成员。这包括但不限于对 Object.GetType 的不受限制的访问、通过 Type.GetType 对公共导出类型的访问以及对 GetTypeFromHandle 的访问。Type 的某些属性 (Property)(例如 FullNameAttributes)可以在没有 ReflectionPermission 的情况下访问。

Type 是允许多个实现的抽象基类。系统将总是提供派生类 RuntimeType。在反射中,所有以 Runtime 一词开头的类对系统中的每个对象都只能创建一次,并且这些类支持比较操作。

提示

在多线程方案中,不要锁定 Type 对象以同步对 static 数据的访问。其他不受您控制的代码可能也会锁定您的类类型。这可能会导致死锁。应转而通过锁定私有 static 对象来同步对静态数据的访问。

这个类是线程安全的;多个线程可以同时从此类型的一个实例读取数据。Type 的实例可表示以下任何类型:

  • 值类型

  • 数组

  • 接口

  • 指针

  • 枚举

  • 构造泛型类型和泛型类型定义

  • 构造泛型类型、泛型类型定义和泛型方法定义的类型实参和类型形参

可以通过下列方式获得对与某个类型关联的 Type 对象的引用:

  • Object.GetType 方法返回表示实例类型的 Type 对象。

  • 静态 GetType 方法返回 Type 对象,该对象表示由其完全限定名指定的类型。

  • Module.GetTypesModule.GetTypeModule.FindTypes 方法返回 Type 对象,这些对象表示在某个模块中定义的类型。第一个方法可用于获得模块中定义的所有公共类型和私有类型的 Type 对象的数组。(可以通过 Assembly.GetModuleAssembly.GetModules 方法,或通过 Type.Module 属性 (Property) 获得 Module 的实例。)

  • FindInterfaces 方法返回某个类型所支持的接口类型的筛选后的列表。

  • GetElementType 方法返回表示元素的 Type 对象。

  • GetInterfacesGetInterface 方法返回表示某个类型所支持的接口类型的 Type 对象。

  • GetTypeArray 方法返回表示任意一组对象所指定的类型的 Type 对象数组。这些对象用 Object 类型的数组指定。

  • GetTypeFromProgIDGetTypeFromCLSID 方法是为 COM 交互操作而提供的。这些方法返回表示 ProgIDCLSID 所指定的类型的 Type 对象。

  • GetTypeFromHandle 方法是为交互操作而提供的。此方法返回表示类句柄所指定的类型的 Type 对象。

  • C# typeof 运算符、C++ typeid 运算符和 Visual Basic GetType 运算符获得某个类型的 Type 对象。

  • MakeGenericType 方法返回 Type 对象,该对象表示构造泛型类型,如果该对象的 ContainsGenericParameters 属性返回 true,则该类型为开放构造类型,否则为封闭构造类型。只能实例化封闭的泛型类型。

  • MakeArrayTypeMakePointerTypeMakeByRefType 方法返回 Type 对象,这些对象分别表示指定类型的数组、指向指定类型的指针以及引用参数的类型(在 C# 中为 ref,在 Visual Basic 中为 ByRef)。

提示

派生类可以访问调用代码的基类的受保护成员。而且还可以访问调用代码程序集的程序集成员。一般来说,如果允许访问早期绑定代码,那么也就允许访问后期绑定代码。

提示

扩展其他接口的接口不继承被扩展的接口中定义的方法。

给继承者的说明 当从 Type 继承时,必须重写以下成员:GUIDInvokeMember(String,BindingFlags,Binder,Object,Object[],ParameterModifier[],CultureInfo,String[])ModuleAssemblyTypeHandleFullNameNamespaceAssemblyQualifiedNameBaseTypeGetConstructorImplGetConstructors(BindingFlags)GetMethodImplGetMethods(BindingFlags)GetField(String,BindingFlags)GetFields(BindingFlags)GetInterface(String,Boolean)GetInterfacesGetEvent(String,BindingFlags)GetEvents(BindingFlags)GetPropertyImplGetProperties(BindingFlags)GetNestedType(String,BindingFlags)GetNestedTypes(BindingFlags)GetAttributeFlagsImplIsArrayImplIsByRefImplIsPointerImplIsPrimitiveImplIsCOMObjectImplGetElementTypeHasElementTypeImplUnderlyingSystemTypeMemberInfo.NameMemberInfo.IsDefinedMemberInfo.GetCustomAttributesGetCustomAttributes

继承层次结构

System.Object
   System.Reflection.MemberInfo
    System.Type
       System.Reflection.Emit.EnumBuilder
       System.Reflection.Emit.GenericTypeParameterBuilder
       System.Reflection.Emit.TypeBuilder
       System.Reflection.TypeDelegator

线程安全

此类型是线程安全的。

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Type 成员
System 命名空间
Object 类
System.Reflection
ReflectionPermission