Type-Klasse

Stellt Typdeklarationen dar: Klassentypen, Schnittstellentypen, Arraytypen, Wertetypen, Enumerationstypen, Typparameter, generische Typdefinitionen und offen oder geschlossen konstruierte generische Typen.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public MustInherit Class Type
    Inherits MemberInfo
    Implements _Type, IReflect
'Usage
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

Hinweise

Type bildet die Basis für die System.Reflection-Funktionalität und das Hauptverfahren für den Zugriff auf Metadaten. Über die Member von Type können Sie Informationen über die Typdeklaration abrufen, z. B. über Konstruktoren, Methoden, Felder, Eigenschaften und Ereignisse einer Klasse sowie über das Modul und die Assembly, in der die Klasse bereitgestellt wird.

Ein Type-Objekt, das einen Typ darstellt, ist eindeutig, d. h. zwei Type-Objektverweise verweisen dann nur dann auf dasselbe Objekt, wenn sie denselben Typ darstellen. Dies ermöglicht den Vergleich von Type-Objekten mithilfe der Verweisgleichheit.

Ohne ReflectionPermission kann Code nur auf die öffentlichen Member geladener Assemblys zugreifen. Der Zugriff umfasst u. a. uneingeschränkten Zugriff auf Object.GetType, Zugriff auf öffentliche, exportierte Typen durch Type.GetType und Zugriff auf GetTypeFromHandle. Auf einige Eigenschaften von Type, z. B. FullName und Attributes, kann ohne ReflectionPermission zugegriffen werden.

Type ist eine abstrakte Basisklasse, die mehrere Implementierungen zulässt. Das System stellt immer die abgeleitete Klasse RuntimeType bereit. In der Reflektion werden alle Klassen, die mit dem Wort Runtime beginnen, einmal für jedes Objekt im System mit Unterstützung für Vergleichsvorgängen erstellt.

Hinweis

Sperren Sie beim Einsatz von Multithreading keine Type-Objekte, um den Zugriff auf static-Daten zu synchronisieren. Anderer Code, auf den Sie keinen Einfluss haben, kann den Klassentyp ebenfalls sperren. Dies kann zu einem Deadlock führen. Synchronisieren Sie den Zugriff auf statische Daten stattdessen durch das Sperren eines privaten static-Objekts.

Diese Klasse ist threadsicher: Mehrere Threads können eine Instanz dieses Typs gleichzeitig lesen. Eine Instanz von Type kann jeden der folgenden Typen darstellen:

  • Klassen

  • Werttypen

  • Arrays

  • Schnittstellen

  • Zeiger

  • Enumerationen

  • Konstruierte generische Typen und generische Typdefinitionen

  • Typargumente und Typparameter von konstruierten generischen Typen, generischen Typdefinitionen und generischen Methodendefinitionen

Ein Verweis auf das einem Typ zugeordnete Type-Objekt kann auf eine der folgenden Arten erstellt werden:

  • Die Object.GetType-Methode gibt ein Type-Objekt zurück, das den Typ einer Instanz darstellt.

  • Die statische GetType-Methode gibt ein Type-Objekt zurück, das einen über seinen voll gekennzeichneten Namen angegebenen Typ darstellt.

  • Die Module.GetTypes-Methode, die Module.GetType-Methode und die Module.FindTypes-Methode geben Type-Objekte zurück, die die in einem Modul definierten Typen darstellen. Mit einem Aufruf der ersten Methode rufen Sie ein Array von Type-Objekten für alle in einem Modul definierten öffentlichen und privaten Typen ab. (Eine Instanz von Module kann über die Assembly.GetModule-Methode, die Assembly.GetModules-Methode oder die Type.Module-Eigenschaft abgerufen werden.)

  • Die FindInterfaces-Methode gibt eine gefilterte Liste der von einem Typ unterstützten Schnittstellentypen zurück.

  • Die GetElementType-Methode gibt ein Type-Objekt zurück, das das Element darstellt.

  • Die GetInterfaces-Methode und die GetInterface-Methode geben Type-Objekte zurück, die die von einem Typ unterstützten Schnittstellentypen darstellen.

  • Die GetTypeArray-Methode gibt ein Array von Type-Objekten zurück, die die Typen darstellen, die durch eine beliebigen Gruppe von Objekten angegeben sind. Die Objekte werden durch ein Array vom Object-Typ angegeben.

  • Die GetTypeFromProgID-Methode und die GetTypeFromCLSID-Methode werden für die COM-Interoperabilität bereitgestellt. Sie geben ein Type-Objekt zurück, das den durch eine ProgID oder eine CLSID angegebenen Typ darstellt.

  • Die GetTypeFromHandle-Methode wird für die Interoperabilität bereitgestellt. Sie gibt ein Type-Objekt zurück, das den durch ein Klassenhandle angegebenen Typ darstellt.

  • Mit dem typeof-Operator in C#, dem typeid-Operator in C++ und dem GetType-Operator in Visual Basic rufen Sie das Type-Objekt für einen Typ ab.

  • Die MakeGenericType-Methode gibt ein Type-Objekt zurück, das einen konstruierten generischen Typ darstellt. Dieser Typ ist ein offen konstruierter Typ, wenn seine ContainsGenericParameters-Eigenschaft true zurückgibt, andernfalls ein geschlossen konstruierter Typ. Ein generischer Typ kann nur instanziiert werden, wenn er geschlossen ist.

  • Die Methoden MakeArrayType, MakePointerType und MakeByRefType geben Type-Objekte zurück, die ein Array eines angegebenen Typs, einen Zeiger auf einen angegebenen Typ bzw. den Typ eines Verweisparameters (ref in C#, ByRef in Visual Basic) darstellen.

Hinweis

Eine abgeleitete Klasse kann auf geschützte Member der Basisklassen des aufrufenden Codes zugreifen. Der Zugriff auf Assemblymember der Assembly des aufrufenden Codes ist ebenfalls zulässig. Wenn ein Zugriff in früh gebundenem Code zulässig ist, ist er grundsätzlich auch in spät gebundenem Code zulässig.

Hinweis

Schnittstellen, die andere Schnittstellen erweitern, erben die in den erweiterten Schnittstellen definierten Methoden nicht.

Hinweise für Erben Wenn Sie Type vererben, müssen Sie die folgenden Member überschreiben: GUID, InvokeMember(String,BindingFlags,Binder,Object,Object[],ParameterModifier[],CultureInfo,String[]), Module, Assembly, TypeHandle, FullName, Namespace, AssemblyQualifiedName, BaseType, GetConstructorImpl, GetConstructors(BindingFlags), GetMethodImpl, GetMethods(BindingFlags), GetField(String,BindingFlags), GetFields(BindingFlags), GetInterface(String,Boolean), GetInterfaces, GetEvent(String,BindingFlags), GetEvents(BindingFlags), GetPropertyImpl, GetProperties(BindingFlags), GetNestedType(String,BindingFlags), GetNestedTypes(BindingFlags), GetAttributeFlagsImpl, IsArrayImpl, IsByRefImpl, IsPointerImpl, IsPrimitiveImpl, IsCOMObjectImpl, GetElementType, HasElementTypeImpl, UnderlyingSystemType, MemberInfo.Name, MemberInfo.IsDefined, MemberInfo.GetCustomAttributes und GetCustomAttributes.

Vererbungshierarchie

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

Threadsicherheit

Dieser Typ ist threadsicher.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Type-Member
System-Namespace
Object-Klasse
System.Reflection
ReflectionPermission