Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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

 

Veröffentlicht: Oktober 2016

Ruft den Type mit dem angegebenen Namen ab. Dabei wird angegeben, ob bei der Suche 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
)

Parameter

typeName
Type: 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
Type: System.Boolean

true, um eine Ausnahme auszulösen, wenn der Typ nicht gefunden werden kann; false, um null zurückzugeben. Die Angabe von false unterdrückt außerdem einige andere Ausnahmebedingungen, jedoch nicht alle. Informationen finden Sie im Abschnitt für Ausnahmen.

ignoreCase
Type: System.Boolean

true, um ohne Beachtung der Groß-/Kleinschreibung nach typeName zu suchen, false, um mit Beachtung der Groß-/Kleinschreibung nach typeName zu suchen.

Rückgabewert

Type: System.Type

Der Typ mit dem angegebenen Namen. Wenn der Typ nicht gefunden wird, gibt der throwOnError-Parameter an, ob null zurückgegeben oder eine Ausnahme ausgelöst wird. In einigen Fällen wird unabhängig vom Wert von throwOnError eine Ausnahme ausgelöst. Informationen finden Sie im Abschnitt für Ausnahmen.

Exception Condition
ArgumentNullException

typeName ist null.

TargetInvocationException

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

TypeLoadException

throwOnError ist true, und der Typ wurde nicht gefunden.

- oder -

throwOnError ist true, und typeName enthält ungültige Zeichen, z. B. ein eingebettetes Tabstoppzeichen.

- oder -

throwOnError ist true, und typeName ist eine leere Zeichenfolge.

- oder -

throwOnError ist true, und typeName stellt einen Arraytyp mit einer ungültigen Größe dar.

- oder -

typeName stellt ein Array von TypedReference dar.

ArgumentException

throwOnError ist true, und typeName enthält ungültige Syntax, beispielsweise "MyType[,*,]".

- oder -

typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.

- oder -

typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.

- oder -

typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.

FileNotFoundException

throwOnError ist true, und die Assembly oder eine der zugehörigen Abhängigkeiten wurde nicht gefunden.

FileLoadException

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.

BadImageFormatException

Die Assembly oder eine der zugehörigen 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.

Können Sie die GetType Methode zum Abrufen einer Type -Objekt für einen Typ in einer anderen Assembly, wenn Sie wissen, dass die Namespace-qualifizierten Namen. GetTypeführt zum Laden der Assembly im angegebenen typeName. Sie können auch laden eine Assembly mit der Load-Methode, und verwenden Sie dann die GetType oder GetTypes Methoden die Assembly Klasse abgerufen Type Objekte. Wenn ein Typ in einer Assembly, die für Ihr Programm zur Kompilierzeit bekannt ist, ist es effizienter, verwenden typeof in c# GetType in Visual Basic oder typeid in C++.

GetTypefunktioniert nur für Assemblys, die von der Festplatte geladen. Beim Aufrufen GetType zum Nachschlagen eines Typs in eine dynamische Assembly mit definiert, definiert der System.Reflection.Emit Services, erhalten Sie möglicherweise inkonsistentes Verhalten. Das Verhalten abhängig, ob die dynamische Assembly persistent, d. h., erstellt, mit der RunAndSave oder Save Zugriff auf die Modi für die System.Reflection.Emit.AssemblyBuilderAccess Enumeration. Wenn die dynamische Assembly persistent ist und bevor Sie den Datenträger geschrieben wurden GetType wird aufgerufen, das Ladeprogramm für die gespeicherte Assembly sucht, auf dem Datenträger, lädt die Assembly und ruft den Typ aus dieser Assembly ab. Wenn die Assembly nicht gespeichert wurde, wenn auf den Datenträger GetType aufgerufen wird, wird der Methodenrückgabe null. GetTypeflüchtige dynamische Assemblys versteht nicht; aus diesem Grund Aufrufen GetType zum Abrufen eines Typs in eine flüchtige dynamische Assembly gibt null.

Mit GetType für ein dynamisches Modul Abonnieren der AppDomain.AssemblyResolve Ereignis, und rufen GetType vor dem Speichern. Andernfalls erhalten Sie zwei Kopien der Assembly im Arbeitsspeicher.

Die throwOnError Parameter gibt an, was geschieht, wenn der Typ nicht gefunden wird, und auch bestimmte andere Ausnahmebedingungen unterdrückt, wie im Abschnitt für Ausnahmen beschrieben. Einige Ausnahmen werden ausgelöst, unabhängig vom Wert der throwOnError. Wenn der Typ wurde gefunden, aber kann nicht geladen werden kann, z. B. eine TypeLoadException wird ausgelöst, selbst wenn throwOnError ist false.

Die folgende Tabelle zeigt, welche Member einer Basisklasse von zurückgegeben werden die Get Methoden, wenn für einen Typ reflektieren.

Memberart

Statisch

Nicht statische

Konstruktor

Nein

Nein

Feld

Nein

Ja. Ein Feld ist immer nach Name und Signatur ausblenden.

Ereignis

Nicht zutreffend

Das allgemeine Typsystem ist, dass die Vererbung ist identisch mit der Methoden, die die Eigenschaft zu implementieren. Reflektion behandelt Eigenschaften als nach Name und Signatur ausblenden. Siehe Hinweis 2 weiter unten.

Methode

Nein

Ja. Eine Methode (virtuelle und nicht virtuell) möglich nach Namen verdeckte oder nach Name und Signatur ausblenden.

Geschachtelten Typs

Nein

Nein

Eigenschaft

Nicht zutreffend

Das allgemeine Typsystem ist, dass die Vererbung ist identisch mit der Methoden, die die Eigenschaft zu implementieren. Reflektion behandelt Eigenschaften als nach Name und Signatur ausblenden. Siehe Hinweis 2 weiter unten.

  1. Nach Name und Signatur ausblenden berücksichtigt, dass alle Teile der Signatur, die benutzerdefinierten Modifizierer, einschließlich Typen, Parametertypen Sentinels enthält und nicht verwalteten Aufrufkonventionen zurückgeben. Dies ist ein binärer Vergleich.

  2. Für die Reflektion sind die Eigenschaften und Ereignisse nach Name und Signatur ausblenden. Wenn Sie eine Eigenschaft mit einer Get und Set-Zugriffsmethode in der Basisklasse haben, aber hat nur einen Get-Accessor für die abgeleitete Klasse, die Eigenschaft der abgeleiteten Klasse ausgeblendet die Basisklasseneigenschaft und nicht den Setter für die Basisklasse zugreifen werden.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.

Arrays oder COM-Typen werden nicht für durchsucht, es sei denn, sie bereits in der Tabelle der verfügbaren Klassen geladen wurden.

typeNameDer Typname kann durch den Namespace oder ein Assembly qualifizierter Name, der eine Assembly namensspezifikation enthält qualifiziert werden. Siehe AssemblyQualifiedName.

Wenn typeName des Namespace, jedoch nicht den Assemblynamen eingeben, enthält diese Methode sucht nur die Assembly des aufrufenden Objekts und die Datei "mscorlib.dll", in dieser Reihenfolge. Wenn TypeName vollqualifizierten mit dem Assemblynamen teilweise oder vollständig ist, sucht diese Methode in der angegebenen Assembly. Wenn die Assembly einen starken Namen besitzt, ist ein vollständige Assemblyname erforderlich.

Die AssemblyQualifiedName Eigenschaft gibt einen vollqualifizierten Typnamen einschließlich geschachtelter Typen, Assemblyname und Typargumente. Alle Compiler, die die common Language Runtime unterstützen, den einfachen Namen einer geschachtelten Klasse geben, und Reflektion erstellt einen ergänzten Namen bei einer Abfrage in Übereinstimmung mit den folgenden Konventionen.

System_CAPS_noteHinweis

In .NET Framework, Version 2.0 Prozessorarchitektur Assemblyidentität hinzugefügt und kann als Teil der Assembly-Zeichenfolgen angegeben werden. Z. B. "ProcessorArchitecture = Msil". Ist jedoch nicht in die zurückgegebene Zeichenfolge enthalten die AssemblyQualifiedName Eigenschaft, aus Gründen der Kompatibilität. Sie können Typen auch laden, indem Sie erstellen eine AssemblyName -Objekt und übergibt dieses an eine entsprechende Überladung der der Load Methode. Anschließend können Sie die Assembly.GetType -Methode zum Laden von Typen aus der Assembly. Siehe auch AssemblyName.ProcessorArchitecture.

Trennzeichen

Bedeutung

Umgekehrter Schrägstrich (\)

Escape-Zeichen.

Umgekehrtes Apostroph (')

Steht vor eine oder mehrere Ziffern, die die Anzahl von Typparametern, am Ende des Namens eines generischen Typs darstellt.

Klammern ([])

Schließen Sie eine generische Liste der Typargumente, für einen konstruierten generischen Typ; Schließen Sie in einer Liste der Typargumente eine Assembly qualifizierten Typnamen an.

Komma (,)

Ist der Name der Assembly vorangestellt.

Punkt (.)

Gibt die Namespacebezeichner.

Pluszeichen (+)

Ist eine geschachtelte Klasse vorangestellt.

Beispielsweise kann der vollqualifizierte Name für eine Klasse wie folgt aussehen:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly

Wenn der Namespace TopNamespace.Sub wurden, klicken Sie dann müsste die Zeichenfolge das Pluszeichen (+) ein Escapezeichen (\), um zu verhindern, die als Trennzeichen schachteln interpretiert wird. Reflektion wird diese Zeichenfolge wie folgt aus:

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

Ein "++" wird "\ + \ +", und ein "\" wird "\\".

Dieser qualifizierte Name kann beibehalten und später zum Laden der Type. Suchen und Laden einer Type, verwenden Sie GetType entweder mit dem Typ oder einen Namen geben nur mit der Assembly qualifizierten Typnamen. GetTypemit dem Namen nur sieht für den Type in der Assembly des Aufrufers, und klicken Sie dann in der System-Assembly. GetTypemit der Assembly qualifizierten Typnamen für sieht die Type in jeder beliebigen Assembly.

Geben Sie die Namen eventuell nachfolgende Zeichen, die zusätzliche über den Typ Informationen, z. B., ob der Typ ein Verweistyp, ein Zeigertyp oder ein Arraytyp ist. Verwenden Sie zum Abrufen der Typname ohne diese nachfolgenden Zeichen t.GetElementType().ToString(), wobei t ist der Typ.

Leerzeichen sind in allen Komponenten von Typnamen mit Ausnahme der Assemblyname relevant. In der Assemblyname Leerzeichen vor dem Trennzeichen "," relevant sind, aber nach dem Trennzeichen "," Leerzeichen werden ignoriert.

Der Name eines generischen Typs endet mit ein Hochkomma ('), gefolgt von Ziffern, die die Anzahl der Argumente des generischen Typs darstellt. Dieser Name-mangling dient zum Zulassen von Compilern zur Unterstützung von generischer Typen mit dem gleichen Namen, aber mit einer unterschiedlichen Anzahl von Typparametern, im selben Gültigkeitsbereich auftritt. Reflektion gibt z. B. die ergänzten Namen Tuple`1 und Tuple`2 aus den generischen Methoden Tuple(Of T) und Tuple(Of T0, T1) in Visual Basic oder Tuple<T> und Tupel<T0, T1> in Visual c#.

Bei generischen Typen wird die Typargumentliste in Klammern gesetzt, und die Typargumente werden durch Kommas getrennt. Angenommen, eine generische Dictionary<TKey, TValue> verfügt über zwei Typparameter. Ein Dictionary<TKey, TValue> von MyType mit Schlüsseln des Typs String kann wie folgt dargestellt werden:

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

Um eine Assembly qualifizierten Typnamen in einer Liste der Typargumente angeben, schließen Sie die Assembly qualifizierten Typnamen in Klammern ein. Andernfalls werden die Kommas, die trennen die Bestandteile der Assembly qualifizierte Name, als Trennzeichen für weitere Typargumente interpretiert. Z. B. eine Dictionary<TKey, TValue> von MyType aus MyAssembly.dll mit Schlüsseln des Typs String, kann wie folgt angegeben werden:

Type.GetType("System.Collections.Generic.Dictionary`2[System.String,[MyType,MyAssembly]]")
System_CAPS_noteHinweis

Eine Assembly qualifizierten Typnamen kann in Klammern eingeschlossen werden, nur, wenn es in einer Typparameterliste angezeigt wird. Die Regeln für das Suchen von Assemblys für qualifizierten und nicht qualifizierten Typen in Typparameterlisten sind identisch mit den Regeln für qualifizierte und nicht qualifizierte nicht generische Typen.

Auf NULL festlegbare Typen sind ein besonderer Fall von generischen Typen. Angenommen, ein NULL-Werte zulassen Int32 durch die Zeichenfolge "System.Nullable'1[System.Int32]" dargestellt wird.

System_CAPS_noteHinweis

In c#, C++ und Visual Basic können Sie auch auf NULL festlegbaren Typen, die mithilfe von Operatoren abrufen. Angenommen, die NULL-Werte zulässt Boolean zurückgegebene Typ typeof(Nullable<bool>) in c# durch Nullable<Boolean>::typeid in C++ und in GetType(Nullable(Of Boolean)) in Visual Basic.

Die folgende Tabelle zeigt die Syntax, die Sie mit GetType für verschiedene Typen.

Zum Abrufen

Verwendung

Ein NULL-Werte zulässtInt32

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

Ein nicht verwalteter Zeiger aufMyType

Type.GetType("MyType*")

Ein nicht verwalteter Zeiger auf einen Zeiger aufMyType

Type.GetType("MyType**")

Ein verwalteter Zeiger oder Verweis aufMyType

Type.GetType("MyType&"). Beachten Sie, dass im Gegensatz zu Zeigern, verweisen auf eine Ebene beschränkt sind.

Eine übergeordnete Klasse und eine geschachtelte Klasse

Type.GetType("MyParentClass+MyNestedClass")

Ein eindimensionales Array mit einer unteren Grenze von 0

Type.GetType("MyArray[]")

Ein eindimensionales Array mit einer unbekannten Untergrenze

Type.GetType("MyArray[*]")

Ein n-dimensionalen array

Ein Komma (,) innerhalb der Klammern eine insgesamt n-1 Mal. Beispielsweise System.Object[,,] stellt eine dreidimensionale Object Array.

Ein zweidimensionales Array von Arrays

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

Kein rechteckiges zweidimensionales Array mit unbekannten Untergrenzen

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 assemblyqualifizierten generischer Typ mit einem Assembly qualifizierten Typnamen-argument

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

Ein generischer Typ, dessen Type-Argument ein generischer Typ mit zwei Typargumenten ist

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

Universelle Windows-Plattform
Verfügbar seit 10
.NET Framework
Verfügbar seit 1.1
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Zurück zum Anfang
Anzeigen: