Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Type.GetType-Methode (String, Boolean, Boolean)

Aktualisiert: November 2007

Ruft den Type mit dem angegebenen Namen ab. Dabei wird angegeben, ob bei der Suche die Groß- und Kleinschreibung berücksichtigt werden soll und ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird.

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

public static Type GetType(
	string typeName,
	bool throwOnError,
	bool ignoreCase
)
public static Type GetType(
	String typeName,
	boolean throwOnError,
	boolean ignoreCase
)
public static function GetType(
	typeName : String, 
	throwOnError : boolean, 
	ignoreCase : boolean
) : Type

Parameter

typeName
Typ: System.String
Der durch die Assembly bezeichnete Name des abzurufenden Typs. Siehe AssemblyQualifiedName. Wenn sich der Typ in der aktuell ausgeführten Assembly oder in Mscorlib.dll befindet, ist eine Angabe des Typnamens einschließlich des qualifizierenden Namespace ausreichend.
throwOnError
Typ: System.Boolean
true, damit eine Ausnahme ausgelöst wird, wenn der Typ nicht gefunden werden kann, false, damit null zurückgegeben wird.
ignoreCase
Typ: System.Boolean
true, um ohne Berücksichtigung der Groß- und Kleinschreibung nach typeName zu suchen, false, um mit Berücksichtigung der Groß- und Kleinschreibung nach typeName zu suchen.

Rückgabewert

Typ: System.Type
Der Type mit dem angegebenen Namen, sofern gefunden, andernfalls null.

AusnahmeBedingung
ArgumentNullException

Der typeName-Parameter ist null.

TargetInvocationException

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.

TypeLoadException

throwOnError ist true, und der Typ wurde nicht gefunden.

– oder –

Der typeName ist ungültig.

– oder –

typeName ist eine leere Zeichenfolge.

– oder –

typeName stellt ein Array von TypedReference dar. Dies stellt eine Änderung zum Verhalten in .NET Framework, Versionen 1.0 und 1.1, dar, bei denen ein NULL-Verweis zurückgegeben werden sollte.

ArgumentException

typeName ist ein als Verweis übergebener Zeiger oder eine generische Klasse mit Void als Typparameter.

FileNotFoundException

Die Assembly oder eine ihrer Abhängigkeiten wurde nicht gefunden.

FileLoadException

Die Assembly oder eine ihrer Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.

BadImageFormatException

Die Assembly oder eine ihrer Abhängigkeiten ist ungültig.

– oder –

Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und die Assembly wurde mit einer höheren Version kompiliert.

Sie können die GetType-Methode verwenden, um ein Type-Objekt für einen Typ in einer anderen Assembly abzurufen, wenn der durch den Namespace qualifizierte Name bekannt ist. GetType führt zum Laden der in typeName angegebenen Assembly. Sie können eine Assembly auch mit der Load-Methode laden und anschließend die GetType-Methode oder die GetTypes-Methode der Assembly-Klasse verwenden, um Type-Objekte abzurufen. Wenn sich ein Typ in einer während der Kompilierung des Programms bekannten Assembly befindet, ist es effizienter, typeof in C#, GetType in Visual Basic bzw. typeid in C++ zu verwenden.

GetType kann nur für von der Festplatte geladene Assemblys verwendet werden. Wenn GetType zur Suche nach einem Typ eingesetzt wird, der in einer dynamischen Assembly definiert ist, die unter Verwendung der System.Reflection.Emit-Dienste definiert wurde, könnten die Ergebnisse inkonsistent sein. Das Verhalten hängt davon ab, ob die dynamische Assembly persistent ist, d. h., ob sie mit einem der Zugriffsmodi RunAndSave oder Save der System.Reflection.Emit.AssemblyBuilderAccess-Enumeration erstellt wurde. Wenn die dynamische Assembly persistent ist und vor dem Aufruf von GetType auf der Festplatte gespeichert wurde, findet der Lader die auf der Festplatte gespeicherte Assembly, lädt diese Assembly und ruft den Typ aus dieser Assembly ab. Wenn die Assembly vor dem Aufruf von GetType nicht auf der Festplatte gespeichert wurde, gibt die Methode null zurück. GetType erkennt keine flüchtigen dynamischen Assemblys. Daher gibt ein Aufruf von GetType zum Abrufen eines Typs aus einer flüchtigen dynamischen Assembly null zurück.

Abonnieren Sie zur Verwendung von GetType für ein dynamisches Modul die AppDomain.AssemblyResolve-Eigenschaft, und rufen Sie GetType vor dem Speichern auf. Andernfalls werden im Arbeitsspeicher zwei Exemplare der Assembly angelegt.

Der throwOnError-Parameter beeinflusst nur, was geschieht, wenn der Typ nicht gefunden wird. Andere Ausnahmen, die möglicherweise ausgelöst werden, sind davon nicht betroffen. Wenn der Typ zwar gefunden wird, aber nicht geladen werden kann, kann auch dann eine TypeLoadException ausgelöst werden, wenn throwOnError false ist.

Diese Methode gibt null zurück, wenn der angeforderte Typ nicht öffentlich ist und der Aufrufer keine ReflectionPermission zum Reflektieren nicht öffentlicher Objekte außerhalb der aktuellen Assembly besitzt.

In der folgenden Tabelle sind die Member einer Basisklasse aufgeführt, die bei der Reflektion eines Typs von den Get-Methoden zurückgegeben werden.

Membertyp

Statisch

Nicht statisch

Konstruktor

Nein

Nein

Feld

Nein

Ja. Felder sind immer nach Namen und Signatur verdeckt.

Ereignis

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

Methode

Nein

Ja. Eine Methode, virtuell oder nicht virtuell, kann nach Namen oder nach Namen und Signatur verdeckt sein.

Geschachtelter Typ

Nein

Nein

Eigenschaft

Nicht zutreffend

Im allgemeinen Typsystem ist die Vererbung i. d. R. dieselbe wie die Vererbung der Methoden, die die Eigenschaft implementieren. Die Reflektion behandelt Eigenschaften als nach Namen und Signatur verdeckt. Siehe Hinweis 2 unten.

  1. Beim Verdecken nach Namen und Signatur werden alle Teile der Signatur berücksichtigt. Dies schließt benutzerdefinierte Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwaltete Aufrufkonventionen ein. Dies ist ein binärer Vergleich.

  2. Die Reflektion behandelt Eigenschaften und Ereignisse als nach Namen und Signatur verdeckt. Wenn eine Eigenschaft in einer Basisklasse sowohl einen Get-Accessor als auch einen Set-Accessor, in einer abgeleiteten Klasse hingegen nur einen Get-Accessor besitzt, verdeckt die Eigenschaft der abgeleiteten Klasse die Eigenschaft der Basisklasse, und der Set-Accessor der Basisklasse ist nicht mehr zugänglich.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Es wird nicht nach Arrays oder COM-Typen gesucht, es sei denn, diese wurden zuvor in die Tabelle der verfügbaren Klassen geladen.

typeName kann den durch den Namespace qualifizierten Typnamen oder einen durch die Assembly qualifizierten Namen (einschließlich der Assemblynamensspezifikation) enthalten. Siehe AssemblyQualifiedName.

Wenn typeName den Namespace, nicht aber den Assemblynamen enthält, sucht diese Methode nur in der Assembly des aufrufenden Objekts sowie in Mscorlib.dll (in dieser Reihenfolge). Wenn typeName mit dem partiellen oder vollständigen Namen der Assembly voll gekennzeichnet ist, sucht diese Methode in der angegebenen Assembly. Wenn die Assembly über einen starken Namen verfügt, ist ein vollständiger Assemblyname erforderlich.

Die AssemblyQualifiedName-Eigenschaft gibt einen vollqualifizierten Typnamen einschließlich der geschachtelten Typen, des Assemblynamens und der Typargumente zurück. Alle Compiler, die die Common Language Runtime unterstützen, geben den einfachen Namen einer geschachtelten Klasse aus. Durch die Reflektion wird auf Anforderung ein ergänzter Name entsprechend den folgenden Konventionen gebildet.

a87che9d.alert_note(de-de,VS.90).gifHinweis:

In .NET Framework, Version 2.0, wird der Assemblyidentität die Prozessorarchitektur hinzugefügt. Diese kann als Teil der Zeichenfolgen für Assemblynamen angegeben werden. Beispiel: "ProcessorArchitecture=msil". Aus Kompatibilitätsgründen ist diese Angabe jedoch nicht in der von der AssemblyQualifiedName-Eigenschaft zurückgegebenen Zeichenfolge enthalten. Sie können Typen auch laden, indem Sie ein AssemblyName-Objekt erstellen und dieses an eine geeignete Überladung der Load-Methode übergeben. Anschließend können Sie mithilfe der Assembly.GetType-Methode Typen aus der Assembly laden. Siehe auch AssemblyName.ProcessorArchitecture.

Trennzeichen

Bedeutung

Umgekehrter Schrägstrich (\)

Escapezeichen.

Einfaches schließendes Anführungszeichen (`)

Wird einer oder mehreren Ziffern vorangestellt, die die Zahl der Typparameter angeben, und wird am Ende des Namens eines generischen Typs aufgeführt.

Klammern ([])

Umschließen bei einem konstruierten generischen Typ eine Argumentliste für den generischen Typ. Umschließen in einer Typargumentliste einen durch die Assembly qualifizierten Typ.

Komma (,)

Wird dem Assemblynamen vorangestellt.

Punkt (.)

Kennzeichnet Namespacebezeichner.

Pluszeichen (+)

Wird einer geschachtelten Klasse vorangestellt.

Der vollqualifizierte Name einer Klasse könnte z. B. wie folgt lauten:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Wenn der Namespace TopNamespace.Sub+Namespace hieße, müsste dem Pluszeichen (+) in der Zeichenfolge ein Escapezeichen (\) vorangestellt werden, damit es nicht als Schachtelungstrennzeichen interpretiert wird. Die Reflektion gibt diese Zeichenfolge wie folgt aus:

TopNamespace.Sub\+Namespace.ContainingClass+NestedClass,MyAssembly

Aus "++" wird "\+\+", und aus "\" wird "\\".

Dieser qualifizierte Name kann beibehalten und später zum Laden des Type verwendet werden. Verwenden Sie GetType entweder nur mit dem Typnamen oder den durch die Assembly gekennzeichneten Typnamen zum Suchen und Laden eines Type. Wenn nur der Typname angegeben wird, sucht GetType nach Type in der Assembly des Aufrufers und danach in der Systemassembly. Wenn durch die Assembly gekennzeichnete Typname angegeben wird, sucht GetType nach Type in einer beliebigen Assembly.

Die Typnamen können am Ende Zeichen enthalten, die zusätzliche Informationen über den Typ angeben, z. B., ob es sich um einen Verweis-, Zeiger- oder Arraytyp handelt. Um den Typnamen ohne diese nachfolgenden Zeichen abzurufen, verwenden Sie t.GetElementType().ToString(), wobei t der Typ ist.

Außer bei Assemblynamen sind Leerzeichen in allen Komponenten von Typnamen relevant. Beim Assemblynamen sind Leerzeichen nur vor dem Trennzeichen ',' relevant, dahinter werden sie ignoriert.

Der Name eines generischen Typs endet mit einem einfachen schließenden Anführungszeichen (`), gefolgt von einer oder mehreren Ziffern, die die Zahl der generischen Typargumente angeben. Durch diese Namensergänzung sind Compiler in der Lage, generische Typen mit identischen Namen zu unterstützen, die eine unterschiedliche Zahl an Typparametern aufweisen und im selben Gültigkeitsbereich auftreten. Die Reflektion gibt z. B. die ergänzten Namen Tuple`1 und Tuple`2 für die generischen Methoden Tuple(Of T) und Tuple(Of T0, T1) in Visual Basic bzw. Tuple<T> und Tuple<T0, T1> in Visual C# zurück.

Bei generischen Typen ist die Typargumentliste durch Klammern umschlossen, und die Typargumente sind durch Kommas getrennt. Ein generisches Dictionary<TKey, TValue> besitzt z. B. zwei Typparameter. Ein Dictionary<TKey, TValue> von MyType mit Schlüsseln vom Typ String könnte wie folgt dargestellt werden:

System.Collections.Generic.Dictionary`2[System.String,MyType]

Um einen durch die Assembly qualifizierten Typ in einer Typargumentliste anzugeben, umschließen Sie den durch die Assembly qualifizierten Typ mit Klammern. Andernfalls werden die Kommas, die die Bestandteile des durch die Assembly qualifizierten Namens trennen, als Trennzeichen für weitere Typargumente interpretiert. Ein Dictionary<TKey, TValue> von MyType aus MyAssembly.dll mit Schlüsseln vom Typ String kann z. B. wie folgt angegeben werden:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
a87che9d.alert_note(de-de,VS.90).gifHinweis:

Ein durch die Assembly qualifizierter Typ darf nur in einer Typparameterliste mit Klammern umschlossen werden. Die Regeln für die Suche in Assemblys nach qualifizierten und nicht qualifizierten Typen in Typparameterlisten entsprechen den Regeln für qualifizierte und nicht qualifizierte nicht generische Typen.

Typen, für die Nullwerte zulässig sind, stellen einen Sonderfall unter den generischen Typen dar. Zum Beispiel wird ein Int32, für den Nullwerte zulässig sind, durch die Zeichenfolge "System.Nullable`1[System.Int32]" dargestellt.

a87che9d.alert_note(de-de,VS.90).gifHinweis:

In C#, C++ und Visual Basic können Sie Typen, für die Nullwerte zulässig sind, auch mithilfe von Operatoren abrufen. Zum Beispiel wird ein Boolean-Typ, für den Nullwerte zulässig sind, in C# von typeof(Nullable<bool>), in C++ von Nullable<Boolean>::typeid und in Visual Basic von GetType(Nullable(Of Boolean)) zurückgegeben.

In der folgenden Tabelle wird die bei GetType für verschiedene Typen zu verwendende Syntax aufgeführt.

Typ

Zu verwendende Syntax

Ein Int32, für den Nullwerte zulässig sind

Type.GetType("System.Nullable`1[System.Int32]")

Ein nicht verwalteter Zeiger auf MyType

Type.GetType("MyType*")

Ein nicht verwalteter Zeiger auf einen Zeiger auf MyType

Type.GetType("MyType**")

Ein verwalteter Zeiger oder ein Verweis auf MyType

Type.GetType("MyType&"). Im Gegensatz zu Zeigern sind Verweise auf eine Ebene beschränkt.

Eine übergeordnete Klasse oder eine geschachtelte Klasse

Type.GetType("MyParentClass+MyNestedClass")

Ein eindimensionales Array mit 0 als unterer Grenze

Type.GetType("MyArray[]")

Ein eindimensionales Array mit unbekannter unterer Grenze

Type.GetType("MyArray[*]")

Ein n-dimensionales Array

Eine Folge von n-1 Kommas (,) innerhalb der eckigen Klammern. System.Object[,,] stellt z. B. ein dreidimensionales Object-Array dar.

Ein zweidimensionales Array von Arrays

Type.GetType("MyArray[][]")

Ein rechteckiges zweidimensionales Array mit unbekannten unteren Grenzen

Type.GetType("MyArray[*,*]") oder Type.GetType("MyArray[,]")

Ein generischer Typ mit einem Typargument

Type.GetType("MyGenericType`1[MyType]")

Ein generischer Typ mit zwei Typargumenten

Type.GetType("MyGenericType`2[MyType,AnotherType]")

Ein generischer Typ mit zwei durch die Assembly qualifizierten Typargumenten

Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")

Ein durch die Assembly qualifizierter generischer Typ mit einem durch die Assembly qualifizierten Typargument

Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")

Ein generischer Typ, dessen Typargument ein generischer Typ mit zwei Typargumenten ist

Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")

Hinweis zu Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows CE:

Der ignoreCase-Parameter wird nicht unterstützt und sollte auf false festgelegt werden.

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

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 3.5, 2.0, 1.0

XNA Framework

Unterstützt in: 2.0, 1.0
Anzeigen: