Type.GetType Type.GetType Type.GetType Type.GetType Method

Definition

Ruft ein Type-Objekt ab, das den angegebenen Typ darstellt.Gets a Type object that represents the specified type.

Überlädt

GetType() GetType() GetType() GetType()

Ruft den aktuellen Type ab.Gets the current Type.

GetType(String) GetType(String) GetType(String) GetType(String)

Ruft den Type mit dem angegebenen Namen ab. Bei der Suche wird die Groß-/Kleinschreibung beachtet.Gets the Type with the specified name, performing a case-sensitive search.

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Ruft den Type mit dem angegebenen Namen ab. Bei der Suche wird die Groß-/Kleinschreibung beachtet. Dabei wird angegeben, ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

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.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Ruft den Typ mit dem angegebenen Namen ab und stellt optional benutzerdefinierte Methoden bereit, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Ruft den Typ mit dem angegebenen Namen ab. Dabei wird angegeben, ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird, und optional werden benutzerdefinierte Methoden bereitgestellt, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Ruft den Typ mit dem angegebenen Namen ab. Dabei wird angegeben, ob bei der Suche die Groß-/Kleinschreibung beachtet werden soll und ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird, und optional werden benutzerdefinierte Methoden bereitgestellt, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

GetType() GetType() GetType() GetType()

Ruft den aktuellen Type ab.Gets the current Type.

public:
 virtual Type ^ GetType();
public Type GetType ();
override this.GetType : unit -> Type
Public Function GetType () As Type

Gibt zurück

Der aktuelle Type.The current Type.

Implementiert

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

Siehe auch

GetType(String) GetType(String) GetType(String) GetType(String)

Ruft den Type mit dem angegebenen Namen ab. Bei der Suche wird die Groß-/Kleinschreibung beachtet.Gets the Type with the specified name, performing a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName);
public static Type GetType (string typeName);
static member GetType : string -> Type
Public Shared Function GetType (typeName As String) As Type

Parameter

typeName
String String String String

Der durch die Assembly bezeichnete Name des abzurufenden Typs.The assembly-qualified name of the type to get. Siehe AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

Gibt zurück

Der Typ mit dem angegebenen Namen, sofern gefunden, andernfalls null.The type with the specified name, if found; otherwise, null.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

Fangen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek stattdessen die Basisklassenausnahme IOException ab.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist ungültig.The assembly or one of its dependencies is not valid.

- oder --or-

Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und die Assembly wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Beispiele

Im folgenden Beispiel wird der Typ von System.Int32 abgerufen und mithilfe dieses Type-Objekts die FullName -Eigenschaft von System.Int32angezeigt.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Hinweise

Mit der GetType -Methode können Sie ein Type -Objekt für einen Typ in einer anderen Assembly abrufen, wenn Sie den durch die Assembly qualifizierten Namen kennen, der AssemblyQualifiedNamevon abgerufen werden kann.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypebewirkt das Laden der in typeNameangegebenen Assembly.GetType causes loading of the assembly specified in typeName. Sie können eine Assembly Assembly.Load auch mit der-Methode laden und dann die-Methode oder Assembly.GetTypes die Assembly.GetType - Type Methode verwenden, um-Objekte zu erhalten.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Wenn ein Typ in einer Assembly ist, die dem Programm zur Kompilierzeit bekannt ist, ist es effizienter typeof , C# in oder GetType den-Operator in Visual Basic zu verwenden.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

Hinweis

Wenn typeName nicht gefunden werden kann, gibt der Rückruf GetType(String) der Methode nullzurück.If typeName cannot be found, the call to the GetType(String) method returns null. Es wird keine Ausnahme ausgelöst.It does not throw an exception. Um zu steuern, ob eine Ausnahme ausgelöst wird, müssen Sie eine GetType Überladung der- throwOnError Methode aufrufen, die über einen-Parameter verfügt.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

GetTypefunktioniert nur für Assemblys, die vom Datenträger geladenGetType only works on assemblies loaded from disk. Wenn Sie GetType einen in einer dynamischen Assembly, die mithilfe der System.Reflection.Emit Dienste definiert wurde, definierten Typ suchen, wird möglicherweise ein inkonsistentes Verhalten angezeigt.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Das Verhalten hängt davon ab, ob die dynamische Assembly permanent ist, d. h. RunAndSave mithilfe Save der Zugriffs Modi System.Reflection.Emit.AssemblyBuilderAccess oder der-Enumeration erstellt wurde.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Wenn die dynamische Assembly permanent ist und auf den Datenträger geschrieben wurde GetType , bevor aufgerufen wird, sucht das Lade Modul die gespeicherte Assembly auf dem Datenträger, lädt diese Assembly und ruft den Typ aus dieser Assembly ab.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Wenn die Assembly nicht auf dem Datenträger gespeichert wurde GetType , wenn aufgerufen wird, gibt nulldie Methode zurück.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeversteht keine vorübergehenden dynamischen Assemblys. Daher gibt das GetType Aufrufen von zum Abrufen eines Typs in einer vorübergehenden dynamischen nullAssembly zurück.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Abonnieren Sie GetType das Ereignis, und führen Sie vor dem AppDomain.AssemblyResolve speichern einen Rückruf GetType aus, um in einem dynamischen Modul zu verwenden.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Andernfalls erhalten Sie zwei Kopien der Assembly im Arbeitsspeicher.Otherwise, you will get two copies of the assembly in memory.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Arrays oder COM-Typen werden nicht durchsucht, es sei denn, Sie wurden bereits in die Tabelle der verfügbaren Klassen geladen.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamekann der durch den Namespace qualifizierte Typname oder ein durch die Assembly qualifizierter Name sein, der eine Assemblynamensspezifikation enthält.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Siehe AssemblyQualifiedName.See AssemblyQualifiedName.

Wenn typeName den Namespace, aber nicht den Assemblynamen enthält, durchsucht diese Methode nur die Assembly des aufrufenden Objekts und die Datei "mscorlib. dll" in dieser Reihenfolge.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Wenn tygtame vollständig mit dem Assemblynamen partiell oder vollständig qualifiziert ist, sucht diese Methode in der angegebenen Assembly.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Wenn die Assembly einen starken Namen hat, ist ein vollständiger AssemblyName erforderlich.If the assembly has a strong name, a complete assembly name is required.

Die AssemblyQualifiedName -Eigenschaft gibt einen voll qualifizierten Typnamen zurück, einschließlich der-Typen, der Assemblynamen und der generischen Typargumente.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic type arguments. Alle Compiler, die die Common Language Runtime unterstützen, geben den einfachen Namen einer geschachtelten Klasse aus, und die Reflektion erstellt bei der Abfrage einen geschachtelten Namen in Übereinstimmung mit den folgenden Konventionen.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Hinweis

In der .NET Framework Version 2,0 wird die Prozessorarchitektur der Assemblyidentität hinzugefügt und kann als Teil der assemblynamenszeichenfolgen angegeben werden.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Beispiel: "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Aus Kompatibilitätsgründen ist Sie jedoch nicht in der Zeichenfolge AssemblyQualifiedName enthalten, die von der-Eigenschaft zurückgegeben wird.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Sie können auch Typen laden, indem Sie AssemblyName ein-Objekt erstellen und es an eine entsprechende Load Überladung der-Methode übergeben.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Sie können dann die Assembly.GetType -Methode verwenden, um Typen aus der Assembly zu laden.You can then use the Assembly.GetType method to load types from the assembly. Siehe auch AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

TrennzeichenDelimiter BedeutungMeaning
Umgekehrter Schrägstrich (\)Backslash (\) Escapezeichen.Escape character.
Backtick (')Backtick (`) Geht einer oder mehreren Ziffern vorangestellt, die die Anzahl der Typparameter darstellen, die sich am Ende des Namens eines generischen Typs befinden.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Eckige Klammern ([])Brackets ([]) Umschließen einer generischen Typargument Liste für einen konstruierten generischen Typ; Schließen Sie in einer Typargument Liste einen assemblyqualifizierten Typ ein.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Komma (,)Comma (,) Geht vor dem Assemblynamen.Precedes the Assembly name.
Punkt (.)Period (.) Bezeichnet Namespace Bezeichner.Denotes namespace identifiers.
Plus Zeichen (+)Plus sign (+) Geht einer-Klasse vorangestellt.Precedes a nested class.

Der voll qualifizierte Name für eine Klasse könnte beispielsweise wie folgt aussehen:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Wenn der Namespace ein TopNamespace. Sub +-Namespace wäre, müsste die Zeichenfolge dem Pluszeichen (+) mit einem Escapezeichen (\) vorangestellt werden, um zu verhindern, dass Sie als Schachtelungs Trennzeichen interpretiert wird.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Die Reflektion gibt diese Zeichenfolge wie folgt aus:Reflection emits this string as follows:

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

Ein "+ +" wird zu\"\\+\+", und "" wird zu "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Dieser qualifizierte Name kann persistent gespeichert und später zum Laden Typevon verwendet werden.This qualified name can be persisted and later used to load the Type. Um nach einem Typezu suchen und zu laden GetType , verwenden Sie entweder mit dem Typnamen oder mit dem qualifizierten Assemblynamen.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypebeim Typnamen wird nur Type in der Assembly des Aufrufers und dann in der Systemassembly nach gesucht.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypemit dem qualifizierten Assemblynamen für die Assembly Type wird in beliebiger Assembly nach gesucht.GetType with the assembly qualified type name will look for the Type in any assembly.

Typnamen können nachfolgende Zeichen enthalten, die zusätzliche Informationen über den Typ angeben, z. b. ob der Typ ein Verweistyp, ein Zeigertyp oder ein Arraytyp ist.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Um den Typnamen ohne diese nachfolgenden Zeichen abzurufen, t.GetElementType().ToString()verwenden Sie t , wobei der-Typ ist.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Leerzeichen sind in allen Typnamen Komponenten mit Ausnahme des Assemblynamens relevant.Spaces are relevant in all type name components except the assembly name. Im Assemblynamen sind Leerzeichen vor dem Trennzeichen ', ' relevant, Leerzeichen nach dem Trennzeichen ', ' werden jedoch ignoriert.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Der Name eines generischen Typs endet mit einem Graviszeichen (`) gefolgt von Ziffern, die die Anzahl der generischen Typargumente darstellen.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Der Zweck dieses Namens besteht darin, Compiler die Unterstützung generischer Typen mit dem gleichen Namen, jedoch mit unterschiedlicher Anzahl von Typparametern, die im gleichen Bereich auftreten, zuzulassen.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Reflektion gibt beispielsweise das TupleTupel\<T0, T1> Tuple<T> Tuple(Of T) 2 mit demandNamen 1 aus den generischen Methoden Tuple(Of T0, T1) und in Visual Basic oder und Tupel in Visual C#zurück.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Bei generischen Typen wird die Typargument Liste in eckige Klammern eingeschlossen, und die Typargumente werden durch Kommas getrennt.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Beispielsweise verfügt ein generisches Dictionary<TKey,TValue> über zwei Typparameter.For example, a generic Dictionary<TKey,TValue> has two type parameters. Eine Dictionary<TKey,TValue> String von MyType mit Schlüsseln des Typs kann wie folgt dargestellt werden:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Um einen durch die Assembly qualifizierten Typ innerhalb einer Typargument Liste anzugeben, schließen Sie den durch die Assembly qualifizierten Typ in eckige Klammern ein.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Andernfalls werden die Kommas, die die Teile des durch die Assembly qualifizierten Namens trennen, als Grenzen zusätzlicher Typargumente interpretiert.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Beispielsweise kann eine Dictionary<TKey,TValue> von MyType frommyassembly. dll mit Schlüsseln vom Typ Stringwie folgt angegeben werden:For example, a Dictionary<TKey,TValue> of MyType fromMyAssembly.dll, with keys of type String, might be specified as follows:

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

Hinweis

Ein durch eine Assembly qualifizierter Typ kann nur in eckige Klammern eingeschlossen werden, wenn er in einer Typparameter Liste angezeigt wird.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Die Regeln zum Durchsuchen von Assemblys für qualifizierte und nicht qualifizierte Typen in Typparameter Listen sind identisch mit den Regeln für qualifizierte und nicht qualifizierte nicht generische Typen.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Typen, die NULL-Werte zulassen, sind Sonderfälle von generischen Typen.Nullable types are a special case of generic types. Beispielsweise wird ein Werte zulässt Int32 -Element durch die Zeichenfolge "System. Werte zulässt ' 1 [System. Int32]" dargestellt.For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Hinweis

In C#, C++und Visual Basic Sie mit Typoperatoren auch Typen, die NULL-Werte zulassen, erhalten.In C#, C++, and Visual Basic you can also get nullable types using type operators. Der Typ, der NULL- Boolean Werte zulässt, wird z C#. b Nullable<Boolean>::typeid . C++von typeof(Nullable<bool>) in, GetType(Nullable(Of Boolean)) von in und von in Visual Basic zurückgegeben.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Die folgende Tabelle zeigt die Syntax, die Sie GetType mit für verschiedene Typen verwenden.The following table shows the syntax you use with GetType for various types.

So erhalten SieTo Get VerwendungUse
Ein Werte zulässtInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Ein nicht verwalteter Zeiger aufMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Ein nicht verwalteter Zeiger auf einen Zeiger auf.MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Ein verwalteter Zeiger oder ein Verweis auf.MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Beachten Sie, dass Verweise im Gegensatz zu Zeigern auf eine Ebene beschränkt sind.Note that unlike pointers, references are limited to one level.
Eine übergeordnete Klasse und eine nicht erbt KlasseA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Ein eindimensionales Array mit einer unteren Grenze von 0.A one-dimensional array with a lower bound of 0 Type.GetType("MyType[]")
Ein eindimensionales Array mit einer unbekannten unteren Grenze.A one-dimensional array with an unknown lower bound Type.GetType("MyType[*]")
Ein n-dimensionales ArrayAn n-dimensional array Ein Komma (,) innerhalb der eckige Klammern, das insgesamt n-1 Mal ist.A comma (,) inside the brackets a total of n-1 times. Beispielsweise System.Object[,,] stellt ein dreidimensionales Object Array dar.For example, System.Object[,,] represents a three-dimensional Object array.
Ein Array von eindimensionalen ArraysAn array of one-dimensional arrays Type.GetType("MyType[][]")
Ein rechteckiges zweidimensionales Array mit unbekannten unteren BegrenzungenA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyType[,]")
Ein generischer Typ mit einem Typargument.A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Ein generischer Typ mit zwei Typargumenten.A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Ein generischer Typ mit zwei durch die Assembly qualifizierten Typargumenten.A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Ein durch eine Assembly qualifizierter generischer Typ mit einem assemblyqualifizierten Typargument.An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Ein generischer Typ, dessen Typargument ein generischer Typ mit zwei Typargumenten istA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Siehe auch

GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean) GetType(String, Boolean)

Ruft den Type mit dem angegebenen Namen ab. Bei der Suche wird die Groß-/Kleinschreibung beachtet. Dabei wird angegeben, ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird.Gets the Type with the specified name, performing a case-sensitive search and specifying whether to throw an exception if the type is not found.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError);
public static Type GetType (string typeName, bool throwOnError);
static member GetType : string * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean) As Type

Parameter

typeName
String String String String

Der durch die Assembly bezeichnete Name des abzurufenden Typs.The assembly-qualified name of the type to get. Siehe AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean Boolean Boolean Boolean

true, damit eine Ausnahme ausgelöst wird, wenn der Typ nicht gefunden werden kann, false, damit null zurückgegeben wird.true to throw an exception if the type cannot be found; false to return null. Die Angabe von false unterdrückt auch einige andere Ausnahmebedingungen, aber nicht alle.Specifying false also suppresses some other exception conditions, but not all of them. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Gibt zurück

Der Typ mit dem angegebenen Namen.The type with the specified name. Wenn der Typ nicht gefunden wird, gibt der throwOnError-Parameter an, ob null zurückgegeben oder eine Ausnahme ausgelöst wird.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In einigen Fällen wird unabhängig vom Wert von throwOnError eine Ausnahme ausgelöst.In some cases, an exception is thrown regardless of the value of throwOnError. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

throwOnError ist true, und der Typ wurde nicht gefunden.throwOnError is true and the type is not found.

- oder --or- throwOnError ist true, und typeName enthält ungültige Zeichen, z. B. ein eingebettetes Tabstoppzeichen.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - oder --or- throwOnError ist true, und typeName ist eine leere Zeichenfolge.throwOnError is true and typeName is an empty string.

- oder --or- throwOnError ist true, und typeName stellt einen Arraytyp mit einer ungültigen Größe dar.throwOnError is true and typeName represents an array type with an invalid size.

- oder --or- typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

throwOnError ist true, und typeName enthält ungültige Syntax,throwOnError is true and typeName contains invalid syntax. beispielsweise "MyType[,*,]".For example, "MyType[,*,]".

- oder --or- typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError ist true und die Assembly oder eine der zugehörigen Abhängigkeiten wurde nicht gefunden.throwOnError is true and the assembly or one of its dependencies was not found.

Fangen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek stattdessen die Basisklassenausnahme IOException ab.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, IOException, instead.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist ungültig.The assembly or one of its dependencies is not valid.

- oder --or-

Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und die Assembly wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Beispiele

Im folgenden Beispiel wird der Typ von System.Int32 abgerufen und mithilfe dieses Type-Objekts die FullName -Eigenschaft von System.Int32angezeigt.The following example retrieves the type of System.Int32 and uses that type object to display the FullName property of System.Int32. Wenn ein Typobjekt auf eine Assembly verweist, die nicht vorhanden ist, wird in diesem Beispiel eine Ausnahme ausgelöst.If a type object refers to an assembly that does not exist, this example throws an exception.

using namespace System;

int main()
{
   try {
      // Get the type of a specified class.
      Type^ myType1 = Type::GetType( "System.Int32" );
      Console::WriteLine( "The full name is {0}.\n", myType1->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type System.Int32",
                          e->GetType()->Name);
   }

   try {
      // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
      Type^ myType2 = Type::GetType( "NoneSuch", true );
      Console::WriteLine( "The full name is {0}.", myType2->FullName );
   }
   catch ( TypeLoadException^ e ) {
       Console::WriteLine("{0}: Unable to load type NoneSuch",
                          e->GetType()->Name);
   }

}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
using System;

class Example
{
     public static void Main()
     {
         try {
             // Get the type of a specified class.
             Type myType1 = Type.GetType("System.Int32");
             Console.WriteLine("The full name is {0}.\n", myType1.FullName);
         }
         catch (TypeLoadException e)
         {
            Console.WriteLine("{0}: Unable to load type System.Int32", e.GetType().Name);
         }

         try {
             // Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Type myType2 = Type.GetType("NoneSuch", true);
             Console.WriteLine("The full name is {0}.", myType2.FullName);
         }
         catch(TypeLoadException e) {
            Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name);
         }
     }
}
// The example displays the following output:
//       The full name is System.Int32.
//
//       TypeLoadException: Unable to load type NoneSuch
Class Example
     Public Shared Sub Main()
         Try
             ' Get the type of the specified class.
             Dim myType1 As Type = Type.GetType("System.Int32")
             Console.WriteLine("The full name is {0}.", myType1.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type System.Int32",
                               e.GetType().Name)
         End Try

         Console.WriteLine()

         Try
             ' Since NoneSuch does not exist in this assembly, GetType throws a TypeLoadException.
             Dim myType2 As Type = Type.GetType("NoneSuch", True)
             Console.WriteLine("The full name is {0}.", myType2.FullName)
         Catch e As TypeLoadException
             Console.WriteLine("{0}: Unable to load type NoneSuch", e.GetType().Name)
         End Try
     End Sub
End Class
' The example displays the following output:
'       The full name is System.Int32.
'
'       TypeLoadException: Unable to load type NoneSuch

Hinweise

Mit der GetType -Methode können Sie ein Type -Objekt für einen Typ in einer anderen Assembly abrufen, wenn Sie den durch die Assembly qualifizierten Namen kennen, der AssemblyQualifiedNamevon abgerufen werden kann.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypebewirkt das Laden der in typeNameangegebenen Assembly.GetType causes loading of the assembly specified in typeName. Sie können eine Assembly Assembly.Load auch mit der-Methode laden und dann die-Methode oder Assembly.GetTypes die Assembly.GetType - Type Methode verwenden, um-Objekte zu erhalten.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Wenn ein Typ in einer Assembly ist, die dem Programm zur Kompilierzeit bekannt ist, ist es effizienter typeof , C# in oder GetType den-Operator in Visual Basic zu verwenden.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetTypefunktioniert nur für Assemblys, die vom Datenträger geladenGetType only works on assemblies loaded from disk. Wenn Sie GetType einen in einer dynamischen Assembly, die mithilfe der System.Reflection.Emit Dienste definiert wurde, definierten Typ suchen, wird möglicherweise ein inkonsistentes Verhalten angezeigt.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Das Verhalten hängt davon ab, ob die dynamische Assembly permanent ist, d. h. RunAndSave mithilfe Save der Zugriffs Modi System.Reflection.Emit.AssemblyBuilderAccess oder der-Enumeration erstellt wurde.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Wenn die dynamische Assembly permanent ist und auf den Datenträger geschrieben wurde GetType , bevor aufgerufen wird, sucht das Lade Modul die gespeicherte Assembly auf dem Datenträger, lädt diese Assembly und ruft den Typ aus dieser Assembly ab.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Wenn die Assembly nicht auf dem Datenträger gespeichert wurde GetType , wenn aufgerufen wird, gibt nulldie Methode zurück.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeversteht keine vorübergehenden dynamischen Assemblys. Daher gibt das GetType Aufrufen von zum Abrufen eines Typs in einer vorübergehenden dynamischen nullAssembly zurück.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Abonnieren Sie GetType das Ereignis, und führen Sie vor dem AppDomain.AssemblyResolve speichern einen Rückruf GetType aus, um in einem dynamischen Modul zu verwenden.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Andernfalls erhalten Sie zwei Kopien der Assembly im Arbeitsspeicher.Otherwise, you will get two copies of the assembly in memory.

Der throwOnError -Parameter gibt an, was geschieht, wenn der Typ nicht gefunden wird, und unterdrückt auch bestimmte andere Ausnahmebedingungen, wie im Abschnitt Ausnahmen beschrieben.The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Einige Ausnahmen werden unabhängig vom Wert von throwOnErrorausgelöst.Some exceptions are thrown regardless of the value of throwOnError. Wenn der Typ z. b. gefunden wurde, aber nicht geladen werden TypeLoadException kann, wird auch throwOnError eine falseausgelöst, wenn gleich ist.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Arrays oder COM-Typen werden nicht durchsucht, es sei denn, Sie wurden bereits in die Tabelle der verfügbaren Klassen geladen.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamekann der durch den Namespace qualifizierte Typname oder ein durch die Assembly qualifizierter Name sein, der eine Assemblynamensspezifikation enthält.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Siehe AssemblyQualifiedName.See AssemblyQualifiedName.

Wenn typeName den Namespace, aber nicht den Assemblynamen enthält, durchsucht diese Methode nur die Assembly des aufrufenden Objekts und die Datei "mscorlib. dll" in dieser Reihenfolge.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Wenn tygtame vollständig mit dem Assemblynamen partiell oder vollständig qualifiziert ist, sucht diese Methode in der angegebenen Assembly.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Wenn die Assembly einen starken Namen hat, ist ein vollständiger AssemblyName erforderlich.If the assembly has a strong name, a complete assembly name is required.

Die AssemblyQualifiedName -Eigenschaft gibt einen voll qualifizierten Typnamen zurück, einschließlich der-Typen, des Assemblynamens und der generischen Argumente.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and generic arguments. Alle Compiler, die die Common Language Runtime unterstützen, geben den einfachen Namen einer geschachtelten Klasse aus, und die Reflektion erstellt bei der Abfrage einen geschachtelten Namen in Übereinstimmung mit den folgenden Konventionen.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Hinweis

In der .NET Framework Version 2,0 wird die Prozessorarchitektur der Assemblyidentität hinzugefügt und kann als Teil der assemblynamenszeichenfolgen angegeben werden.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Beispiel: "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Aus Kompatibilitätsgründen ist Sie jedoch nicht in der Zeichenfolge AssemblyQualifiedName enthalten, die von der-Eigenschaft zurückgegeben wird.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Sie können auch Typen laden, indem Sie AssemblyName ein-Objekt erstellen und es an eine entsprechende Load Überladung der-Methode übergeben.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Sie können dann die Assembly.GetType -Methode verwenden, um Typen aus der Assembly zu laden.You can then use the Assembly.GetType method to load types from the assembly. Siehe auch AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

TrennzeichenDelimiter BedeutungMeaning
Umgekehrter Schrägstrich (\)Backslash (\) Escapezeichen.Escape character.
Backtick (')Backtick (`) Geht einer oder mehreren Ziffern vorangestellt, die die Anzahl der Typparameter darstellen, die sich am Ende des Namens eines generischen Typs befinden.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Eckige Klammern ([])Brackets ([]) Umschließen einer generischen Typargument Liste für einen konstruierten generischen Typ; Schließen Sie in einer Typargument Liste einen assemblyqualifizierten Typ ein.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Komma (,)Comma (,) Geht vor dem Assemblynamen.Precedes the Assembly name.
Punkt (.)Period (.) Bezeichnet Namespace Bezeichner.Denotes namespace identifiers.
Plus Zeichen (+)Plus sign (+) Geht einer-Klasse vorangestellt.Precedes a nested class.

Der voll qualifizierte Name für eine Klasse könnte beispielsweise wie folgt aussehen:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Wenn der Namespace ein TopNamespace. Sub +-Namespace wäre, müsste die Zeichenfolge dem Pluszeichen (+) mit einem Escapezeichen (\) vorangestellt werden, um zu verhindern, dass Sie als Schachtelungs Trennzeichen interpretiert wird.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Die Reflektion gibt diese Zeichenfolge wie folgt aus:Reflection emits this string as follows:

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

Ein "+ +" wird zu\"\\+\+", und "" wird zu "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Dieser qualifizierte Name kann persistent gespeichert und später zum Laden Typevon verwendet werden.This qualified name can be persisted and later used to load the Type. Um nach einem Typezu suchen und zu laden GetType , verwenden Sie entweder mit dem Typnamen oder mit dem qualifizierten Assemblynamen.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypebeim Typnamen wird nur Type in der Assembly des Aufrufers und dann in der Systemassembly nach gesucht.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypemit dem qualifizierten Assemblynamen für die Assembly Type wird in beliebiger Assembly nach gesucht.GetType with the assembly qualified type name will look for the Type in any assembly.

Typnamen können nachfolgende Zeichen enthalten, die zusätzliche Informationen über den Typ angeben, z. b. ob der Typ ein Verweistyp, ein Zeigertyp oder ein Arraytyp ist.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Um den Typnamen ohne diese nachfolgenden Zeichen abzurufen, t.GetElementType().ToString()verwenden Sie t , wobei der-Typ ist.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Leerzeichen sind in allen Typnamen Komponenten mit Ausnahme des Assemblynamens relevant.Spaces are relevant in all type name components except the assembly name. Im Assemblynamen sind Leerzeichen vor dem Trennzeichen ', ' relevant, Leerzeichen nach dem Trennzeichen ', ' werden jedoch ignoriert.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Der Name eines generischen Typs endet mit einem Graviszeichen (`) gefolgt von Ziffern, die die Anzahl der generischen Typargumente darstellen.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Der Zweck dieses Namens besteht darin, Compiler die Unterstützung generischer Typen mit dem gleichen Namen, jedoch mit unterschiedlicher Anzahl von Typparametern, die im gleichen Bereich auftreten, zuzulassen.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Reflektion gibt beispielsweise das TupleTupel\<T0, T1> Tuple<T> Tuple(Of T) 2 mit demandNamen 1 aus den generischen Methoden Tuple(Of T0, T1) und in Visual Basic oder und Tupel in Visual C#zurück.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Bei generischen Typen wird die Typargument Liste in eckige Klammern eingeschlossen, und die Typargumente werden durch Kommas getrennt.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Beispielsweise verfügt ein generisches Dictionary<TKey,TValue> über zwei Typparameter.For example, a generic Dictionary<TKey,TValue> has two type parameters. Eine Dictionary<TKey,TValue> String von MyType mit Schlüsseln des Typs kann wie folgt dargestellt werden:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Um einen durch die Assembly qualifizierten Typ innerhalb einer Typargument Liste anzugeben, schließen Sie den durch die Assembly qualifizierten Typ in eckige Klammern ein.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Andernfalls werden die Kommas, die die Teile des durch die Assembly qualifizierten Namens trennen, als Grenzen zusätzlicher Typargumente interpretiert.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Beispielsweise kann eine Dictionary<TKey,TValue> von MyType aus MyAssembly. dll mit Schlüsseln vom Typ Stringwie folgt angegeben werden:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Hinweis

Ein durch eine Assembly qualifizierter Typ kann nur in eckige Klammern eingeschlossen werden, wenn er in einer Typparameter Liste angezeigt wird.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Die Regeln zum Durchsuchen von Assemblys für qualifizierte und nicht qualifizierte Typen in Typparameter Listen sind identisch mit den Regeln für qualifizierte und nicht qualifizierte nicht generische Typen.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Typen, die NULL-Werte zulassen, sind Sonderfälle von generischen Typen.Nullable types are a special case of generic types. Beispielsweise wird ein Werte zulässt Int32 -Element durch die Zeichenfolge "System. Werte zulässt ' 1 [System. Int32]" dargestellt.For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Hinweis

In C#, C++und Visual Basic Sie mit Typoperatoren auch Typen, die NULL-Werte zulassen, erhalten.In C#, C++, and Visual Basic you can also get nullable types using type operators. Der Typ, der NULL- Boolean Werte zulässt, wird z C#. b Nullable<Boolean>::typeid . C++von typeof(Nullable<bool>) in, GetType(Nullable(Of Boolean)) von in und von in Visual Basic zurückgegeben.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Die folgende Tabelle zeigt die Syntax, die Sie GetType mit für verschiedene Typen verwenden.The following table shows the syntax you use with GetType for various types.

So erhalten SieTo Get VerwendungUse
Ein Werte zulässtInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Ein nicht verwalteter Zeiger aufMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Ein nicht verwalteter Zeiger auf einen Zeiger auf.MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Ein verwalteter Zeiger oder ein Verweis auf.MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Beachten Sie, dass Verweise im Gegensatz zu Zeigern auf eine Ebene beschränkt sind.Note that unlike pointers, references are limited to one level.
Eine übergeordnete Klasse und eine nicht erbt KlasseA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Ein eindimensionales Array mit einer unteren Grenze von 0.A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Ein eindimensionales Array mit einer unbekannten unteren Grenze.A one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Ein n-dimensionales ArrayAn n-dimensional array Ein Komma (,) innerhalb der eckige Klammern, das insgesamt n-1 Mal ist.A comma (,) inside the brackets a total of n-1 times. Beispielsweise System.Object[,,] stellt ein dreidimensionales Object Array dar.For example, System.Object[,,] represents a three-dimensional Object array.
Array eines zweidimensionalen ArraysA two-dimensional array's array Type.GetType("MyArray[][]")
Ein rechteckiges zweidimensionales Array mit unbekannten unteren BegrenzungenA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Ein generischer Typ mit einem Typargument.A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Ein generischer Typ mit zwei Typargumenten.A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Ein generischer Typ mit zwei durch die Assembly qualifizierten Typargumenten.A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Ein durch eine Assembly qualifizierter generischer Typ mit einem assemblyqualifizierten Typargument.An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Ein generischer Typ, dessen Typargument ein generischer Typ mit zwei Typargumenten istA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Siehe auch

GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean) GetType(String, Boolean, Boolean)

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.Gets the Type with the specified name, specifying whether to throw an exception if the type is not found and whether to perform a case-sensitive search.

public:
 static Type ^ GetType(System::String ^ typeName, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, bool throwOnError, bool ignoreCase);
static member GetType : string * bool * bool -> Type
Public Shared Function GetType (typeName As String, throwOnError As Boolean, ignoreCase As Boolean) As Type

Parameter

typeName
String String String String

Der durch die Assembly bezeichnete Name des abzurufenden Typs.The assembly-qualified name of the type to get. Siehe AssemblyQualifiedName.See 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.If the type is in the currently executing assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.

throwOnError
Boolean Boolean Boolean Boolean

true, damit eine Ausnahme ausgelöst wird, wenn der Typ nicht gefunden werden kann, false, damit null zurückgegeben wird.true to throw an exception if the type cannot be found; false to return null. Die Angabe von false unterdrückt auch einige andere Ausnahmebedingungen, aber nicht alle.Specifying false also suppresses some other exception conditions, but not all of them. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true, um ohne Beachtung der Groß-/Kleinschreibung nach typeName zu suchen, false, um mit Beachtung der Groß-/Kleinschreibung nach typeName zu suchen.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Gibt zurück

Der Typ mit dem angegebenen Namen.The type with the specified name. Wenn der Typ nicht gefunden wird, gibt der throwOnError-Parameter an, ob null zurückgegeben oder eine Ausnahme ausgelöst wird.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In einigen Fällen wird unabhängig vom Wert von throwOnError eine Ausnahme ausgelöst.In some cases, an exception is thrown regardless of the value of throwOnError. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

throwOnError ist true, und der Typ wurde nicht gefunden.throwOnError is true and the type is not found.

- oder --or- throwOnError ist true, und typeName enthält ungültige Zeichen, z. B. ein eingebettetes Tabstoppzeichen.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - oder --or- throwOnError ist true, und typeName ist eine leere Zeichenfolge.throwOnError is true and typeName is an empty string.

- oder --or- throwOnError ist true, und typeName stellt einen Arraytyp mit einer ungültigen Größe dar.throwOnError is true and typeName represents an array type with an invalid size.

- oder --or- typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

throwOnError ist true, und typeName enthält ungültige Syntax,throwOnError is true and typeName contains invalid syntax. beispielsweise "MyType[,*,]".For example, "MyType[,*,]".

- oder --or- typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError ist true, und die Assembly oder eine der zugehörigen Abhängigkeiten wurde nicht gefunden.throwOnError is true and the assembly or one of its dependencies was not found.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist ungültig.The assembly or one of its dependencies is not valid.

- oder --or-

Version 2.0 oder höher der Common Language Runtime ist derzeit geladen, und die Assembly wurde mit einer höheren Version kompiliert.Version 2.0 or later of the common language runtime is currently loaded, and the assembly was compiled with a later version.

Hinweise

Mit der GetType -Methode können Sie ein Type -Objekt für einen Typ in einer anderen Assembly abrufen, wenn Sie den durch die Assembly qualifizierten Namen kennen, der AssemblyQualifiedNamevon abgerufen werden kann.You can use the GetType method to obtain a Type object for a type in another assembly if you know its assembly-qualified name, which can be obtained from AssemblyQualifiedName. GetTypebewirkt das Laden der in typeNameangegebenen Assembly.GetType causes loading of the assembly specified in typeName. Sie können eine Assembly Assembly.Load auch mit der-Methode laden und dann die-Methode oder Assembly.GetTypes die Assembly.GetType - Type Methode verwenden, um-Objekte zu erhalten.You can also load an assembly using the Assembly.Load method, and then use the Assembly.GetType or Assembly.GetTypes method to get Type objects. Wenn ein Typ in einer Assembly ist, die dem Programm zur Kompilierzeit bekannt ist, ist es effizienter typeof , C# in oder GetType den-Operator in Visual Basic zu verwenden.If a type is in an assembly known to your program at compile time, it is more efficient to use typeof in C# or the GetType operator in Visual Basic.

GetTypefunktioniert nur für Assemblys, die vom Datenträger geladenGetType only works on assemblies loaded from disk. Wenn Sie GetType einen in einer dynamischen Assembly, die mithilfe der System.Reflection.Emit Dienste definiert wurde, definierten Typ suchen, wird möglicherweise ein inkonsistentes Verhalten angezeigt.If you call GetType to look up a type defined in a dynamic assembly defined using the System.Reflection.Emit services, you might get inconsistent behavior. Das Verhalten hängt davon ab, ob die dynamische Assembly permanent ist, d. h. RunAndSave mithilfe Save der Zugriffs Modi System.Reflection.Emit.AssemblyBuilderAccess oder der-Enumeration erstellt wurde.The behavior depends on whether the dynamic assembly is persistent, that is, created using the RunAndSave or Save access modes of the System.Reflection.Emit.AssemblyBuilderAccess enumeration. Wenn die dynamische Assembly permanent ist und auf den Datenträger geschrieben wurde GetType , bevor aufgerufen wird, sucht das Lade Modul die gespeicherte Assembly auf dem Datenträger, lädt diese Assembly und ruft den Typ aus dieser Assembly ab.If the dynamic assembly is persistent and has been written to disk before GetType is called, the loader finds the saved assembly on disk, loads that assembly, and retrieves the type from that assembly. Wenn die Assembly nicht auf dem Datenträger gespeichert wurde GetType , wenn aufgerufen wird, gibt nulldie Methode zurück.If the assembly has not been saved to disk when GetType is called, the method returns null. GetTypeversteht keine vorübergehenden dynamischen Assemblys. Daher gibt das GetType Aufrufen von zum Abrufen eines Typs in einer vorübergehenden dynamischen nullAssembly zurück.GetType does not understand transient dynamic assemblies; therefore, calling GetType to retrieve a type in a transient dynamic assembly returns null.

Abonnieren Sie GetType das Ereignis, und führen Sie vor dem AppDomain.AssemblyResolve speichern einen Rückruf GetType aus, um in einem dynamischen Modul zu verwenden.To use GetType on a dynamic module, subscribe to the AppDomain.AssemblyResolve event and call GetType before saving. Andernfalls erhalten Sie zwei Kopien der Assembly im Arbeitsspeicher.Otherwise, you will get two copies of the assembly in memory.

Der throwOnError -Parameter gibt an, was geschieht, wenn der Typ nicht gefunden wird, und unterdrückt auch bestimmte andere Ausnahmebedingungen, wie im Abschnitt Ausnahmen beschrieben.The throwOnError parameter specifies what happens when the type is not found, and also suppresses certain other exception conditions, as described in the Exceptions section. Einige Ausnahmen werden unabhängig vom Wert von throwOnErrorausgelöst.Some exceptions are thrown regardless of the value of throwOnError. Wenn der Typ z. b. gefunden wurde, aber nicht geladen werden TypeLoadException kann, wird auch throwOnError eine falseausgelöst, wenn gleich ist.For example, if the type is found but cannot be loaded, a TypeLoadException is thrown even if throwOnError is false.

In der folgenden Tabelle wird gezeigt, welche Member einer Basisklasse von den Get Methoden zurückgegeben werden, wenn ein Typ reflektiert wird.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

MemberartMember Type StatischStatic Nicht statischNon-Static
KonstruktorConstructor NeinNo NeinNo
FeldField NeinNo Ja.Yes. Ein Feld wird immer nach Name und Signatur ausgeblendet.A field is always hide-by-name-and-signature.
eventEvent Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
MethodeMethod NeinNo Ja.Yes. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Namen oder nach Name und Signatur ausgeblendet werden.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Der Typ "Typ"Nested Type NeinNo NeinNo
EigenschaftProperty Nicht zutreffendNot applicable Die allgemeine Typsystem Regel ist, dass die Vererbung mit der der Methoden identisch ist, die die-Eigenschaft implementieren.The common type system rule is that the inheritance is the same as that of the methods that implement the property. Die Reflektion behandelt Eigenschaften als "ausblenden nach Namen" und "Signatur".Reflection treats properties as hide-by-name-and-signature. Siehe Hinweis 2 weiter unten.See note 2 below.
  1. "Hide-by-Name-and-Signature" berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabe Typen, Parametertypen, Sentinels und nicht verwalteter Aufruf Konventionen.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Dies ist ein binärer Vergleich.This is a binary comparison.

  2. Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausgeblendet.For reflection, properties and events are hide-by-name-and-signature. Wenn Sie über eine Eigenschaft verfügen, die sowohl einen get-als auch einen Set-Accessor in der Basisklasse aufweist, aber die abgeleitete Klasse nur über einen get-Accessor verfügt, blendet die Eigenschaft der abgeleiteten Klasse die Basisklassen Eigenschaft aus, und Sie können nicht auf den Setter für die Basisklasse zugreifen.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.Custom attributes are not part of the common type system.

Arrays oder COM-Typen werden nicht durchsucht, es sei denn, Sie wurden bereits in die Tabelle der verfügbaren Klassen geladen.Arrays or COM types are not searched for unless they have already been loaded into the table of available classes.

typeNamekann der durch den Namespace qualifizierte Typname oder ein durch die Assembly qualifizierter Name sein, der eine Assemblynamensspezifikation enthält.typeName can be the type name qualified by its namespace or an assembly-qualified name that includes an assembly name specification. Siehe AssemblyQualifiedName.See AssemblyQualifiedName.

Wenn typeName den Namespace, aber nicht den Assemblynamen enthält, durchsucht diese Methode nur die Assembly des aufrufenden Objekts und die Datei "mscorlib. dll" in dieser Reihenfolge.If typeName includes the namespace but not the assembly name, this method searches only the calling object's assembly and Mscorlib.dll, in that order. Wenn tygtame vollständig mit dem Assemblynamen partiell oder vollständig qualifiziert ist, sucht diese Methode in der angegebenen Assembly.If typeName is fully qualified with the partial or complete assembly name, this method searches in the specified assembly. Wenn die Assembly einen starken Namen hat, ist ein vollständiger AssemblyName erforderlich.If the assembly has a strong name, a complete assembly name is required.

Die AssemblyQualifiedName -Eigenschaft gibt einen voll qualifizierten Typnamen zurück, einschließlich der-Typen, des Assemblynamens und der Typargumente.The AssemblyQualifiedName property returns a fully qualified type name including nested types, the assembly name, and type arguments. Alle Compiler, die die Common Language Runtime unterstützen, geben den einfachen Namen einer geschachtelten Klasse aus, und die Reflektion erstellt bei der Abfrage einen geschachtelten Namen in Übereinstimmung mit den folgenden Konventionen.All compilers that support the common language runtime will emit the simple name of a nested class, and reflection constructs a mangled name when queried, in accordance with the following conventions.

Hinweis

In der .NET Framework Version 2,0 wird die Prozessorarchitektur der Assemblyidentität hinzugefügt und kann als Teil der assemblynamenszeichenfolgen angegeben werden.In the .NET Framework version 2.0, processor architecture is added to assembly identity, and can be specified as part of assembly name strings. Beispiel: "ProcessorArchitecture = msil".For example, "ProcessorArchitecture=msil". Aus Kompatibilitätsgründen ist Sie jedoch nicht in der Zeichenfolge AssemblyQualifiedName enthalten, die von der-Eigenschaft zurückgegeben wird.However, it is not included in the string returned by the AssemblyQualifiedName property, for compatibility reasons. Sie können auch Typen laden, indem Sie AssemblyName ein-Objekt erstellen und es an eine entsprechende Load Überladung der-Methode übergeben.You can also load types by creating an AssemblyName object and passing it to an appropriate overload of the Load method. Sie können dann die Assembly.GetType -Methode verwenden, um Typen aus der Assembly zu laden.You can then use the Assembly.GetType method to load types from the assembly. Siehe auch AssemblyName.ProcessorArchitecture.See also AssemblyName.ProcessorArchitecture.

TrennzeichenDelimiter BedeutungMeaning
Umgekehrter Schrägstrich (\)Backslash (\) Escapezeichen.Escape character.
Backtick (')Backtick (`) Geht einer oder mehreren Ziffern vorangestellt, die die Anzahl der Typparameter darstellen, die sich am Ende des Namens eines generischen Typs befinden.Precedes one or more digits representing the number of type parameters, located at the end of the name of a generic type.
Eckige Klammern ([])Brackets ([]) Umschließen einer generischen Typargument Liste für einen konstruierten generischen Typ; Schließen Sie in einer Typargument Liste einen assemblyqualifizierten Typ ein.Enclose a generic type argument list, for a constructed generic type; within a type argument list, enclose an assembly-qualified type.
Komma (,)Comma (,) Geht vor dem Assemblynamen.Precedes the Assembly name.
Punkt (.)Period (.) Bezeichnet Namespace Bezeichner.Denotes namespace identifiers.
Plus Zeichen (+)Plus sign (+) Geht einer-Klasse vorangestellt.Precedes a nested class.

Der voll qualifizierte Name für eine Klasse könnte beispielsweise wie folgt aussehen:For example, the fully qualified name for a class might look like this:

TopNamespace.SubNameSpace.ContainingClass+NestedClass,MyAssembly  

Wenn der Namespace ein TopNamespace. Sub +-Namespace wäre, müsste die Zeichenfolge dem Pluszeichen (+) mit einem Escapezeichen (\) vorangestellt werden, um zu verhindern, dass Sie als Schachtelungs Trennzeichen interpretiert wird.If the namespace were TopNamespace.Sub+Namespace, then the string would have to precede the plus sign (+) with an escape character (\) to prevent it from being interpreted as a nesting separator. Die Reflektion gibt diese Zeichenfolge wie folgt aus:Reflection emits this string as follows:

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

Ein "+ +" wird zu\"\\+\+", und "" wird zu "\".A "++" becomes "\+\+", and a "\" becomes "\\".

Dieser qualifizierte Name kann persistent gespeichert und später zum Laden Typevon verwendet werden.This qualified name can be persisted and later used to load the Type. Um nach einem Typezu suchen und zu laden GetType , verwenden Sie entweder mit dem Typnamen oder mit dem qualifizierten Assemblynamen.To search for and load a Type, use GetType either with the type name only or with the assembly qualified type name. GetTypebeim Typnamen wird nur Type in der Assembly des Aufrufers und dann in der Systemassembly nach gesucht.GetType with the type name only will look for the Type in the caller's assembly and then in the System assembly. GetTypemit dem qualifizierten Assemblynamen für die Assembly Type wird in beliebiger Assembly nach gesucht.GetType with the assembly qualified type name will look for the Type in any assembly.

Typnamen können nachfolgende Zeichen enthalten, die zusätzliche Informationen über den Typ angeben, z. b. ob der Typ ein Verweistyp, ein Zeigertyp oder ein Arraytyp ist.Type names may include trailing characters that denote additional information about the type, such as whether the type is a reference type, a pointer type or an array type. Um den Typnamen ohne diese nachfolgenden Zeichen abzurufen, t.GetElementType().ToString()verwenden Sie t , wobei der-Typ ist.To retrieve the type name without these trailing characters, use t.GetElementType().ToString(), where t is the type.

Leerzeichen sind in allen Typnamen Komponenten mit Ausnahme des Assemblynamens relevant.Spaces are relevant in all type name components except the assembly name. Im Assemblynamen sind Leerzeichen vor dem Trennzeichen ', ' relevant, Leerzeichen nach dem Trennzeichen ', ' werden jedoch ignoriert.In the assembly name, spaces before the ',' separator are relevant, but spaces after the ',' separator are ignored.

Der Name eines generischen Typs endet mit einem Graviszeichen (`) gefolgt von Ziffern, die die Anzahl der generischen Typargumente darstellen.The name of a generic type ends with a backtick (`) followed by digits representing the number of generic type arguments. Der Zweck dieses Namens besteht darin, Compiler die Unterstützung generischer Typen mit dem gleichen Namen, jedoch mit unterschiedlicher Anzahl von Typparametern, die im gleichen Bereich auftreten, zuzulassen.The purpose of this name mangling is to allow compilers to support generic types with the same name but with different numbers of type parameters, occurring in the same scope. Reflektion gibt beispielsweise das TupleTupel\<T0, T1> Tuple<T> Tuple(Of T) 2 mit demandNamen 1 aus den generischen Methoden Tuple(Of T0, T1) und in Visual Basic oder und Tupel in Visual C#zurück.For example, reflection returns the mangled names Tuple1andTuple2 from the generic methods Tuple(Of T) and Tuple(Of T0, T1) in Visual Basic, or Tuple<T> and Tuple\<T0, T1> in Visual C#.

Bei generischen Typen wird die Typargument Liste in eckige Klammern eingeschlossen, und die Typargumente werden durch Kommas getrennt.For generic types, the type argument list is enclosed in brackets, and the type arguments are separated by commas. Beispielsweise verfügt ein generisches Dictionary<TKey,TValue> über zwei Typparameter.For example, a generic Dictionary<TKey,TValue> has two type parameters. Eine Dictionary<TKey,TValue> String von MyType mit Schlüsseln des Typs kann wie folgt dargestellt werden:A Dictionary<TKey,TValue> of MyType with keys of type String might be represented as follows:

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

Um einen durch die Assembly qualifizierten Typ innerhalb einer Typargument Liste anzugeben, schließen Sie den durch die Assembly qualifizierten Typ in eckige Klammern ein.To specify an assembly-qualified type within a type argument list, enclose the assembly-qualified type within brackets. Andernfalls werden die Kommas, die die Teile des durch die Assembly qualifizierten Namens trennen, als Grenzen zusätzlicher Typargumente interpretiert.Otherwise, the commas that separate the parts of the assembly-qualified name are interpreted as delimiting additional type arguments. Beispielsweise kann eine Dictionary<TKey,TValue> von MyType aus MyAssembly. dll mit Schlüsseln vom Typ Stringwie folgt angegeben werden:For example, a Dictionary<TKey,TValue> of MyType from MyAssembly.dll, with keys of type String, might be specified as follows:

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

Hinweis

Ein durch eine Assembly qualifizierter Typ kann nur in eckige Klammern eingeschlossen werden, wenn er in einer Typparameter Liste angezeigt wird.An assembly-qualified type can be enclosed in brackets only when it appears within a type parameter list. Die Regeln zum Durchsuchen von Assemblys für qualifizierte und nicht qualifizierte Typen in Typparameter Listen sind identisch mit den Regeln für qualifizierte und nicht qualifizierte nicht generische Typen.The rules for searching assemblies for qualified and unqualified types in type parameter lists are the same as the rules for qualified and unqualified nongeneric types.

Typen, die NULL-Werte zulassen, sind Sonderfälle von generischen Typen.Nullable types are a special case of generic types. Beispielsweise wird ein Werte zulässt Int32 -Element durch die Zeichenfolge "System. Werte zulässt ' 1 [System. Int32]" dargestellt.For example, a nullable Int32 is represented by the string "System.Nullable`1[System.Int32]".

Hinweis

In C#, C++und Visual Basic Sie mit Typoperatoren auch Typen, die NULL-Werte zulassen, erhalten.In C#, C++, and Visual Basic you can also get nullable types using type operators. Der Typ, der NULL- Boolean Werte zulässt, wird z C#. b Nullable<Boolean>::typeid . C++von typeof(Nullable<bool>) in, GetType(Nullable(Of Boolean)) von in und von in Visual Basic zurückgegeben.For example, the nullable Boolean type is returned by typeof(Nullable<bool>) in C#, by Nullable<Boolean>::typeid in C++, and by GetType(Nullable(Of Boolean)) in Visual Basic.

Die folgende Tabelle zeigt die Syntax, die Sie GetType mit für verschiedene Typen verwenden.The following table shows the syntax you use with GetType for various types.

So erhalten SieTo Get VerwendungUse
Ein Werte zulässtInt32A nullable Int32 Type.GetType("System.Nullable`1[System.Int32]")
Ein nicht verwalteter Zeiger aufMyTypeAn unmanaged pointer to MyType Type.GetType("MyType*")
Ein nicht verwalteter Zeiger auf einen Zeiger auf.MyTypeAn unmanaged pointer to a pointer to MyType Type.GetType("MyType**")
Ein verwalteter Zeiger oder ein Verweis auf.MyTypeA managed pointer or reference to MyType Type.GetType("MyType&").Type.GetType("MyType&"). Beachten Sie, dass Verweise im Gegensatz zu Zeigern auf eine Ebene beschränkt sind.Note that unlike pointers, references are limited to one level.
Eine übergeordnete Klasse und eine nicht erbt KlasseA parent class and a nested class Type.GetType("MyParentClass+MyNestedClass")
Ein eindimensionales Array mit einer unteren Grenze von 0.A one-dimensional array with a lower bound of 0 Type.GetType("MyArray[]")
Ein eindimensionales Array mit einer unbekannten unteren Grenze.A one-dimensional array with an unknown lower bound Type.GetType("MyArray[*]")
Ein n-dimensionales ArrayAn n-dimensional array Ein Komma (,) innerhalb der eckige Klammern, das insgesamt n-1 Mal ist.A comma (,) inside the brackets a total of n-1 times. Beispielsweise System.Object[,,] stellt ein dreidimensionales Object Array dar.For example, System.Object[,,] represents a three-dimensional Object array.
Array eines zweidimensionalen ArraysA two-dimensional array's array Type.GetType("MyArray[][]")
Ein rechteckiges zweidimensionales Array mit unbekannten unteren BegrenzungenA rectangular two-dimensional array with unknown lower bounds Type.GetType("MyArray[,]")
Ein generischer Typ mit einem Typargument.A generic type with one type argument Type.GetType("MyGenericType`1[MyType]")
Ein generischer Typ mit zwei Typargumenten.A generic type with two type arguments Type.GetType("MyGenericType`2[MyType,AnotherType]")
Ein generischer Typ mit zwei durch die Assembly qualifizierten Typargumenten.A generic type with two assembly-qualified type arguments Type.GetType("MyGenericType`2[[MyType,MyAssembly],[AnotherType,AnotherAssembly]]")
Ein durch eine Assembly qualifizierter generischer Typ mit einem assemblyqualifizierten Typargument.An assembly-qualified generic type with an assembly-qualified type argument Type.GetType("MyGenericType`1[[MyType,MyAssembly]],MyGenericTypeAssembly")
Ein generischer Typ, dessen Typargument ein generischer Typ mit zwei Typargumenten istA generic type whose type argument is a generic type with two type arguments Type.GetType("MyGenericType`1[AnotherGenericType`2[MyType,AnotherType]]")
Siehe auch

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>)

Ruft den Typ mit dem angegebenen Namen ab und stellt optional benutzerdefinierte Methoden bereit, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type)) As Type

Parameter

typeName
String String String String

Der Name des abzurufenden Typs.The name of the type to get. Wenn der typeResolver-Parameter bereitgestellt wird, kann der Typname jede Zeichenfolge sein, die vom typeResolver aufgelöst werden kann.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Wenn der assemblyResolver-Parameter bereitgestellt wird oder wenn die Standardtypauflösung verwendet wird, muss der typeName ein durch die Assembly qualifizierter Name (siehe AssemblyQualifiedName) sein, es sei denn, der Typ befindet sich in der gerade ausgeführten Assembly oder in der Datei Mscorlib.dll. In diesem Fall genügt es, den von seinem Namespace qualifizierten Typnamen anzugeben.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Eine Methode, die die Assembly sucht und zurückgibt, die in typeName angegeben wird.A method that locates and returns the assembly that is specified in typeName. Der Assemblyname wird an den assemblyResolver als ein AssemblyName-Objekt übergeben.The assembly name is passed to assemblyResolver as an AssemblyName object. Wenn typeName keinen Namen einer Assembly enthält, wird der assemblyResolver nicht aufgerufen.If typeName does not contain the name of an assembly, assemblyResolver is not called. Wenn der assemblyResolver nicht angegeben wird, wird die Standardassemblyauflösung ausgeführt.If assemblyResolver is not supplied, standard assembly resolution is performed.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers. Andernfalls könnten Berechtigungen für bösartigen Code erweitert werden.Doing so could result in elevation of privilege for malicious code. Verwenden Sie nur Methoden, die Sie bereitstellen oder mit denen Sie vertraut sind.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Eine Methode, die den Typ sucht und zurückgibt, der von typeName von der Assembly angegeben wird, die vom assemblyResolver oder von der Standardassemblyauflösung zurückgegeben wird.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Wenn keine Assembly bereitgestellt wird, kann die typeResolver-Methode eine Assembly zur Verfügung stellen.If no assembly is provided, the typeResolver method can provide one. Die Methode nimmt auch einen Parameter an, der angibt, ob bei der Suche die Groß- und Kleinschreibung berücksichtigt werden soll; an diesen Parameter wird false übergeben.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers.

Gibt zurück

Der Typ mit dem angegebenen Namen oder null, wenn der Typ nicht gefunden wird.The type with the specified name, or null if the type is not found.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

Ein Fehler tritt auf, wenn typeName in einen Typnamen und einen Assemblynamen zerlegt wird (wenn z. B. der einfache Typname ein Sonderzeichen ohne Escapezeichen enthält).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

- oder --or- typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

- oder --or- typeName enthält einen ungültigen Assemblynamen.typeName contains an invalid assembly name.

- oder --or- typeName ist ein gültiger Assemblyname ohne Typnamen.typeName is a valid assembly name without a type name.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist nicht gültig.The assembly or one of its dependencies is not valid.

- oder --or-

Die Assembly wurde mit einer Version der Common Language Runtime kompiliert, die höher ist als die Version, die derzeit geladen ist.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Hinweise

Verwendungs Szenarien für diese Methode und Details zu den assemblyResolver para typeResolver Metern und finden Sie in der GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) -Methoden Überladung.Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

Hinweis

Wenn typeName nicht gefunden werden kann, gibt der Rückruf GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) der Methode nullzurück.If typeName cannot be found, the call to the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) method returns null. Es wird keine Ausnahme ausgelöst.It does not throw an exception. Um zu steuern, ob eine Ausnahme ausgelöst wird, müssen Sie eine GetType Überladung der- throwOnError Methode aufrufen, die über einen-Parameter verfügt.To control whether an exception is thrown, call an overload of the GetType method that has a throwOnError parameter.

Das Aufrufen dieser Methoden Überladung entspricht dem Aufrufen der GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) -Methoden Überladung false und der throwOnError Angabe ignoreCase von für den-Parameter und den-Parameter.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the throwOnError and ignoreCase parameters.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)

Ruft den Typ mit dem angegebenen Namen ab. Dabei wird angegeben, ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird, und optional werden benutzerdefinierte Methoden bereitgestellt, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, specifying whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean) As Type

Parameter

typeName
String String String String

Der Name des abzurufenden Typs.The name of the type to get. Wenn der typeResolver-Parameter bereitgestellt wird, kann der Typname jede Zeichenfolge sein, die vom typeResolver aufgelöst werden kann.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Wenn der assemblyResolver-Parameter bereitgestellt wird oder wenn die Standardtypauflösung verwendet wird, muss der typeName ein durch die Assembly qualifizierter Name (siehe AssemblyQualifiedName) sein, es sei denn, der Typ befindet sich in der gerade ausgeführten Assembly oder in der Datei Mscorlib.dll. In diesem Fall genügt es, den von seinem Namespace qualifizierten Typnamen anzugeben.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Eine Methode, die die Assembly sucht und zurückgibt, die in typeName angegeben wird.A method that locates and returns the assembly that is specified in typeName. Der Assemblyname wird an den assemblyResolver als ein AssemblyName-Objekt übergeben.The assembly name is passed to assemblyResolver as an AssemblyName object. Wenn typeName keinen Namen einer Assembly enthält, wird der assemblyResolver nicht aufgerufen.If typeName does not contain the name of an assembly, assemblyResolver is not called. Wenn der assemblyResolver nicht angegeben wird, wird die Standardassemblyauflösung ausgeführt.If assemblyResolver is not supplied, standard assembly resolution is performed.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers. Andernfalls könnten Berechtigungen für bösartigen Code erweitert werden.Doing so could result in elevation of privilege for malicious code. Verwenden Sie nur Methoden, die Sie bereitstellen oder mit denen Sie vertraut sind.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Eine Methode, die den Typ sucht und zurückgibt, der von typeName von der Assembly angegeben wird, die vom assemblyResolver oder von der Standardassemblyauflösung zurückgegeben wird.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Wenn keine Assembly bereitgestellt wird, kann die Methode eine Assembly zur Verfügung stellen.If no assembly is provided, the method can provide one. Die Methode nimmt auch einen Parameter an, der angibt, ob bei der Suche die Groß- und Kleinschreibung berücksichtigt werden soll; an diesen Parameter wird false übergeben.The method also takes a parameter that specifies whether to perform a case-insensitive search; false is passed to that parameter.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true , damit eine Ausnahme ausgelöst wird, wenn der Typ nicht gefunden werden kann, false , damit nullzurückgegeben wird.true to throw an exception if the type cannot be found; false to return null. Die Angabe von false unterdrückt auch einige andere Ausnahmebedingungen, aber nicht alle.Specifying false also suppresses some other exception conditions, but not all of them. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Gibt zurück

Der Typ mit dem angegebenen Namen.The type with the specified name. Wenn der Typ nicht gefunden wird, gibt der throwOnError-Parameter an, ob null zurückgegeben oder eine Ausnahme ausgelöst wird.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In einigen Fällen wird unabhängig vom Wert von throwOnError eine Ausnahme ausgelöst.In some cases, an exception is thrown regardless of the value of throwOnError. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

throwOnError ist true, und der Typ wurde nicht gefunden.throwOnError is true and the type is not found.

- oder --or- throwOnError ist true, und typeName enthält ungültige Zeichen, z. B. ein eingebettetes Tabstoppzeichen.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - oder --or- throwOnError ist true, und typeName ist eine leere Zeichenfolge.throwOnError is true and typeName is an empty string.

- oder --or- throwOnError ist true, und typeName stellt einen Arraytyp mit einer ungültigen Größe dar.throwOnError is true and typeName represents an array type with an invalid size.

- oder --or- typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

Ein Fehler tritt auf, wenn typeName in einen Typnamen und einen Assemblynamen zerlegt wird (wenn z. B. der einfache Typname ein Sonderzeichen ohne Escapezeichen enthält).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

- oder --or- throwOnError ist true und typeName enthält ungültige Syntax (z. B. „MyType[,*,]“).throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

- oder --or- typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError ist true, und die Assembly oder eine der zugehörigen Abhängigkeiten wurde nicht gefunden.throwOnError is true and the assembly or one of its dependencies was not found.

- oder --or- typeName enthält einen ungültigen Assemblynamen.typeName contains an invalid assembly name.

- oder --or- typeName ist ein gültiger Assemblyname ohne Typnamen.typeName is a valid assembly name without a type name.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, konnte aber nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist ungültig.The assembly or one of its dependencies is not valid.

- oder --or-

Die Assembly wurde mit einer Version der Common Language Runtime kompiliert, die höher ist als die Version, die derzeit geladen ist.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Hinweise

Verwendungs Szenarien für diese Methode und Details zu den assemblyResolver para typeResolver Metern und finden Sie in der GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) -Methoden Überladung.Usage scenarios for this method and details about the assemblyResolver and typeResolver parameters can be found in the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload.

Das Aufrufen dieser Methoden Überladung ist identisch mit dem GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) Aufrufen der-Methoden false Überladung ignoreCase und der Angabe von für den-Parameter.Calling this method overload is the same as calling the GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) method overload and specifying false for the ignoreCase parameter.

GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean) GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean, Boolean)

Ruft den Typ mit dem angegebenen Namen ab. Dabei wird angegeben, ob bei der Suche die Groß-/Kleinschreibung beachtet werden soll und ob eine Ausnahme ausgelöst werden soll, wenn der Typ nicht gefunden wird, und optional werden benutzerdefinierte Methoden bereitgestellt, um die Assembly und den Typ aufzulösen.Gets the type with the specified name, specifying whether to perform a case-sensitive search and whether to throw an exception if the type is not found, and optionally providing custom methods to resolve the assembly and the type.

public:
 static Type ^ GetType(System::String ^ typeName, Func<System::Reflection::AssemblyName ^, System::Reflection::Assembly ^> ^ assemblyResolver, Func<System::Reflection::Assembly ^, System::String ^, bool, Type ^> ^ typeResolver, bool throwOnError, bool ignoreCase);
public static Type GetType (string typeName, Func<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, Func<System.Reflection.Assembly,string,bool,Type> typeResolver, bool throwOnError, bool ignoreCase);
static member GetType : string * Func<System.Reflection.AssemblyName, System.Reflection.Assembly> * Func<System.Reflection.Assembly, string, bool, Type> * bool * bool -> Type
Public Shared Function GetType (typeName As String, assemblyResolver As Func(Of AssemblyName, Assembly), typeResolver As Func(Of Assembly, String, Boolean, Type), throwOnError As Boolean, ignoreCase As Boolean) As Type

Parameter

typeName
String String String String

Der Name des abzurufenden Typs.The name of the type to get. Wenn der typeResolver-Parameter bereitgestellt wird, kann der Typname jede Zeichenfolge sein, die vom typeResolver aufgelöst werden kann.If the typeResolver parameter is provided, the type name can be any string that typeResolver is capable of resolving. Wenn der assemblyResolver-Parameter bereitgestellt wird oder wenn die Standardtypauflösung verwendet wird, muss der typeName ein durch die Assembly qualifizierter Name (siehe AssemblyQualifiedName) sein, es sei denn, der Typ befindet sich in der gerade ausgeführten Assembly oder in der Datei Mscorlib.dll. In diesem Fall genügt es, den von seinem Namespace qualifizierten Typnamen anzugeben.If the assemblyResolver parameter is provided or if standard type resolution is used, typeName must be an assembly-qualified name (see AssemblyQualifiedName), unless the type is in the currently executing assembly or in Mscorlib.dll, in which case it is sufficient to supply the type name qualified by its namespace.

assemblyResolver
Func<AssemblyName,Assembly>

Eine Methode, die die Assembly sucht und zurückgibt, die in typeName angegeben wird.A method that locates and returns the assembly that is specified in typeName. Der Assemblyname wird an den assemblyResolver als ein AssemblyName-Objekt übergeben.The assembly name is passed to assemblyResolver as an AssemblyName object. Wenn typeName keinen Namen einer Assembly enthält, wird der assemblyResolver nicht aufgerufen.If typeName does not contain the name of an assembly, assemblyResolver is not called. Wenn der assemblyResolver nicht angegeben wird, wird die Standardassemblyauflösung ausgeführt.If assemblyResolver is not supplied, standard assembly resolution is performed.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers. Andernfalls könnten Berechtigungen für bösartigen Code erweitert werden.Doing so could result in elevation of privilege for malicious code. Verwenden Sie nur Methoden, die Sie bereitstellen oder mit denen Sie vertraut sind.Use only methods that you provide or that you are familiar with.

typeResolver
Func<Assembly,String,Boolean,Type>

Eine Methode, die den Typ sucht und zurückgibt, der von typeName von der Assembly angegeben wird, die vom assemblyResolver oder von der Standardassemblyauflösung zurückgegeben wird.A method that locates and returns the type that is specified by typeName from the assembly that is returned by assemblyResolver or by standard assembly resolution. Wenn keine Assembly bereitgestellt wird, kann die Methode eine Assembly zur Verfügung stellen.If no assembly is provided, the method can provide one. Die Methode nimmt auch einen Parameter an, der angibt, ob bei der Suche die Groß-/Kleinschreibung beachtet werden soll; an diesen Parameter wird der Wert von ignoreCase übergeben.The method also takes a parameter that specifies whether to perform a case-insensitive search; the value of ignoreCase is passed to that parameter.

Vorsicht Übergeben Sie keine Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern.Caution Do not pass methods from unknown or untrusted callers.

throwOnError
Boolean Boolean Boolean Boolean

true , damit eine Ausnahme ausgelöst wird, wenn der Typ nicht gefunden werden kann, false , damit nullzurückgegeben wird.true to throw an exception if the type cannot be found; false to return null. Die Angabe von false unterdrückt auch einige andere Ausnahmebedingungen, aber nicht alle.Specifying false also suppresses some other exception conditions, but not all of them. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

ignoreCase
Boolean Boolean Boolean Boolean

true, um ohne Beachtung der Groß-/Kleinschreibung nach typeName zu suchen, false, um mit Beachtung der Groß-/Kleinschreibung nach typeName zu suchen.true to perform a case-insensitive search for typeName, false to perform a case-sensitive search for typeName.

Gibt zurück

Der Typ mit dem angegebenen Namen.The type with the specified name. Wenn der Typ nicht gefunden wird, gibt der throwOnError-Parameter an, ob null zurückgegeben oder eine Ausnahme ausgelöst wird.If the type is not found, the throwOnError parameter specifies whether null is returned or an exception is thrown. In einigen Fällen wird unabhängig vom Wert von throwOnError eine Ausnahme ausgelöst.In some cases, an exception is thrown regardless of the value of throwOnError. Informationen finden Sie im Abschnitt für Ausnahmen.See the Exceptions section.

Ausnahmen

Ein Klasseninitialisierer wird aufgerufen und löst eine Ausnahme aus.A class initializer is invoked and throws an exception.

throwOnError ist true, und der Typ wurde nicht gefunden.throwOnError is true and the type is not found.

- oder --or- throwOnError ist true, und typeName enthält ungültige Zeichen, z. B. ein eingebettetes Tabstoppzeichen.throwOnError is true and typeName contains invalid characters, such as an embedded tab. - oder --or- throwOnError ist true, und typeName ist eine leere Zeichenfolge.throwOnError is true and typeName is an empty string.

- oder --or- throwOnError ist true, und typeName stellt einen Arraytyp mit einer ungültigen Größe dar.throwOnError is true and typeName represents an array type with an invalid size.

- oder --or- typeName stellt ein Array von TypedReference dar.typeName represents an array of TypedReference.

Ein Fehler tritt auf, wenn typeName in einen Typnamen und einen Assemblynamen zerlegt wird (wenn z. B. der einfache Typname ein Sonderzeichen ohne Escapezeichen enthält).An error occurs when typeName is parsed into a type name and an assembly name (for example, when the simple type name includes an unescaped special character).

- oder --or- throwOnError ist true und typeName enthält ungültige Syntax (z. B. „MyType[,*,]“).throwOnError is true and typeName contains invalid syntax (for example, "MyType[,*,]").

- oder --or- typeName stellt einen generischen Typ dar, der einen Zeigertyp, einen ByRef-Typ oder Void als eines seiner Typargumente aufweist.typeName represents a generic type that has a pointer type, a ByRef type, or Void as one of its type arguments.

- oder --or- typeName stellt einen generischen Typ dar, der eine falsche Anzahl von Typargumenten aufweist.typeName represents a generic type that has an incorrect number of type arguments.

- oder --or- typeName stellt einen generischen Typ dar, und eines seiner Typargumente erfüllt nicht die Einschränkungen für den entsprechenden Typparameter.typeName represents a generic type, and one of its type arguments does not satisfy the constraints for the corresponding type parameter.

throwOnError ist true, und die Assembly oder eine der zugehörigen Abhängigkeiten wurde nicht gefunden.throwOnError is true and the assembly or one of its dependencies was not found.

Die Assembly oder eine der zugehörigen Abhängigkeiten wurde gefunden, aber konnte nicht geladen werden.The assembly or one of its dependencies was found, but could not be loaded.

- oder --or- typeName enthält einen ungültigen Assemblynamen.typeName contains an invalid assembly name.

- oder --or- typeName ist ein gültiger Assemblyname ohne Typnamen.typeName is a valid assembly name without a type name.

Die Assembly oder eine der zugehörigen Abhängigkeiten ist nicht gültig.The assembly or one of its dependencies is not valid.

- oder --or-

Die Assembly wurde mit einer Version der Common Language Runtime kompiliert, die höher ist als die Version, die derzeit geladen ist.The assembly was compiled with a later version of the common language runtime than the version that is currently loaded.

Hinweise

Verwenden Sie diese Methoden Überladung und die zugehörigen überGetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) Ladungen GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)(und), um GetType die Standard Implementierung der-Methode durch flexiblere Implementierungen zu ersetzen.Use this method overload and its associated overloads (GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>) and GetType(String, Func<AssemblyName,Assembly>, Func<Assembly,String,Boolean,Type>, Boolean)) to replace the default implementation of the GetType method with more flexible implementations. Durch die Bereitstellung Ihrer eigenen Methoden, mit denen Typnamen und die Namen der Assemblys aufgelöst werden, die Sie enthalten, können Sie Folgendes tun:By providing your own methods that resolve type names and the names of the assemblies that contain them, you can do the following:

  • Steuern, aus welcher Version einer Assembly ein Typ geladen wird.Control which version of an assembly a type is loaded from.

  • Geben Sie einen anderen Ort an, um nach einem Typnamen zu suchen, der keinen Assemblynamen enthält.Provide another place to look for a type name that does not include an assembly name.

  • Lädt Assemblys mit partiellen Assemblynamen.Load assemblies using partial assembly names.

  • Gibt Unterklassen von System.Type zurück, die nicht vom Common Language Runtime (CLR) erstellt werden.Return subclasses of System.Type that are not created by the common language runtime (CLR).

Bei der Versions toleranten Serialisierung können Sie mit dieser Methode z. b. nach einer "am besten geeigneten" Assembly suchen, indem Sie einen partiellen Namen verwenden.For example, in version-tolerant serialization this method enables you to search for a "best fit" assembly by using a partial name. Andere über Ladungen der GetType -Methode erfordern einen durch die Assembly qualifizierten Typnamen, der die Versionsnummer enthält.Other overloads of the GetType method require an assembly-qualified type name, which includes the version number.

Alternative Implementierungen des Typsystems müssen möglicherweise Unterklassen von System.Type zurückgeben, die nicht von der CLR erstellt werden. alle Typen, die von anderen über Ladungen GetType der-Methode zurückgegeben werden, sind Lauf Zeit Typen.Alternate implementations of the type system may need to return subclasses of System.Type that are not created by the CLR; all types that are returned by other overloads of the GetType method are runtime types.

Hinweise zur VerwendungUsage Notes

Diese Methoden Überladung und die zugehörigen über Ladungen werden typeName in den Namen eines Typs und den Namen einer Assembly analysiert und dann die Namen aufgelöst.This method overload and its associated overloads parse typeName into the name of a type and the name of an assembly, and then resolve the names. Die Auflösung des Assemblynamens tritt vor der Auflösung des Typnamens auf, da ein Typname im Kontext einer Assembly aufgelöst werden muss.Resolution of the assembly name occurs before resolution of the type name, because a type name must be resolved in the context of an assembly.

Hinweis

Wenn Sie mit dem Konzept der durch die Assembly qualifizierten Typnamen nicht vertraut sind, AssemblyQualifiedName lesen Sie die-Eigenschaft.If you are unfamiliar with the concept of assembly-qualified type names, see the AssemblyQualifiedName property.

Wenn typeName kein durch die Assembly qualifizierter Name ist, wird die Assemblyauflösung übersprungen.If typeName is not an assembly-qualified name, assembly resolution is skipped. Nicht qualifizierte Typnamen können im Kontext von mscorlib. dll oder der aktuell ausgeführten Assembly aufgelöst werden, oder Sie können optional eine Assembly im typeResolver -Parameter bereitstellen.Unqualified type names can be resolved in the context of Mscorlib.dll or the currently executing assembly, or you can optionally provide an assembly in the typeResolver parameter. Die Auswirkungen, wie der AssemblyName für verschiedene Arten von Namensauflösung eingeschlossen oder weggelassen wird, werden als Tabelle im Abschnitt gemischte Namensauflösung angezeigt.The effects of including or omitting the assembly name for different kinds of name resolution are displayed as a table in the Mixed Name Resolution section.

Allgemeine Hinweise zur Verwendung:General usage notes:

  • Übergeben Sie Methoden nicht an assemblyResolver oder typeResolver , wenn Sie von unbekannten oder nicht vertrauenswürdigen Aufrufern stammen.Do not pass methods to assemblyResolver or typeResolver if they come from unknown or untrusted callers. Verwenden Sie nur Methoden, die Sie bereitstellen oder mit denen Sie vertraut sind.Use only methods that you provide or that you are familiar with.

    Achtung

    Die Verwendung von Methoden von unbekannten oder nicht vertrauenswürdigen Aufrufern kann zu einer Erhöhung von Berechtigungen für bösartigen Code führen.Using methods from unknown or untrusted callers could result in elevation of privilege for malicious code.

  • Wenn Sie den-Parameter assemblyResolver und/oder typeResolver den-Parameter weglassen throwOnError , wird der Wert des-Parameters an die Methoden übergeben, die die Standardauflösung ausführen.If you omit the assemblyResolver and/or typeResolver parameters, the value of the throwOnError parameter is passed to the methods that perform the default resolution.

  • Wenn throwOnError ist typeResolver null assemblyResolver FileNotFoundException , löst diese Methode eine TypeLoadException aus, nullwenn zurückgibt, und ein, wenn zurückgibt. trueIf throwOnError is true, this method throws a TypeLoadException when typeResolver returns null, and a FileNotFoundException when assemblyResolver returns null.

  • Diese Methode fängt keine von assemblyResolver und typeResolverausgelösten Ausnahmen ab.This method does not catch exceptions thrown by assemblyResolver and typeResolver. Sie sind verantwortlich für alle Ausnahmen, die von den Konflikt Löser-Methoden ausgelöst werden.You are responsible for any exceptions that are thrown by the resolver methods.

Assemblys auflösenResolving Assemblies

Die assemblyResolver -Methode empfängt AssemblyName ein-Objekt, das durch die Verarbeitung des in typeNameenthaltenen zeichenfolgenassemblynamens erzeugt wird.The assemblyResolver method receives an AssemblyName object, which is produced by parsing the string assembly name that is included in typeName. Wenn typeName keinen Assemblynamen enthält, assemblyResolver wird nicht aufgerufen, null und wird an typeResolverden-Wert übermittelt.If typeName does not contain an assembly name, assemblyResolver is not called and null is passed to typeResolver.

Wenn assemblyResolver nicht angegeben wird, wird die standardassemblyuntersuchung verwendet, um die Assembly zu suchen.If assemblyResolver is not supplied, standard assembly probing is used to locate the assembly. Wenn assemblyResolver angegeben wird, führt GetType die-Methode keine Standardprüfung durch. in diesem Fall müssen Sie sicherstellen, assemblyResolver dass Ihr alle an Sie übergebenen Assemblys verarbeiten kann.If assemblyResolver is provided, the GetType method does not do standard probing; in that case you must ensure that your assemblyResolver can handle all the assemblies you pass to it.

Die assemblyResolver -Methode sollte null zurückgeben, wenn die Assembly nicht aufgelöst werden kann.The assemblyResolver method should return null if the assembly cannot be resolved. Wenn assemblyResolver zurück nullgibt typeResolver , wird nicht aufgerufen, und es erfolgt keine weitere Verarbeitung. throwOnError Wenn trueist, FileNotFoundException wird eine ausgelöst.If assemblyResolver returns null, typeResolver is not called and no further processing occurs; additionally, if throwOnError is true, a FileNotFoundException is thrown.

Wenn die AssemblyName , die an assemblyResolver weitergegeben wird, ein partieller Name ist, ist mindestens ein nullTeil davon.If the AssemblyName that is passed to assemblyResolver is a partial name, one or more of its parts are null. Wenn Sie z. b. keine Version hat, Version ist nulldie-Eigenschaft.For example, if it has no version, the Version property is null. Wenn die Version -Eigenschaft, CultureInfo die-Eigenschaft und GetPublicKeyToken die-Methode nullalle zurückgeben, wurde nur der einfache Name der Assembly bereitgestellt.If the Version property, the CultureInfo property, and the GetPublicKeyToken method all return null, then only the simple name of the assembly was supplied. Die assemblyResolver -Methode kann alle Teile des Assemblynamens verwenden oder ignorieren.The assemblyResolver method can use or ignore all parts of the assembly name.

Die Auswirkungen verschiedener Optionen für die Assemblyauflösung werden im Abschnitt gemischte Namensauflösung als Tabelle für einfache und durch assemblyqualifizierte Typnamen angezeigt.The effects of different assembly resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Auflösen von TypenResolving Types

Wenn typeName keinen Assemblynamen angibt, typeResolver wird immer aufgerufen.If typeName does not specify an assembly name, typeResolver is always called. Wenn typeName einen Assemblynamen typeResolver angibt, wird nur aufgerufen, wenn der AssemblyName erfolgreich aufgelöst wurde.If typeName specifies an assembly name, typeResolver is called only when the assembly name is successfully resolved. Wenn assemblyResolver oder die standardassemblysuche zurückgibt null, typeResolver wird nicht aufgerufen.If assemblyResolver or standard assembly probing returns null, typeResolver is not called.

Die typeResolver -Methode empfängt drei Argumente:The typeResolver method receives three arguments:

  • Die Assembly, die durch null sucht typeName werden soll, oder, wenn keinen Assemblynamen enthält.The assembly to search or null if typeName does not contain an assembly name.

  • Der einfache Name des Typs.The simple name of the type. Bei einem in einem Typ eingefügten Typ ist dies der äußerste enthaltende Typ.In the case of a nested type, this is the outermost containing type. Bei einem generischen Typ ist dies der einfache Name des generischen Typs.In the case of a generic type, this is the simple name of the generic type.

  • Ein boolescher Wert, der true ist, wenn die Groß-/Kleinschreibung von Typnamen ignoriert werden soll.A Boolean value that is true if the case of type names is to be ignored.

Die-Implementierung bestimmt, wie diese Argumente verwendet werden.The implementation determines the way these arguments are used. Die typeResolver Methode sollte zurück null geben, wenn der Typ nicht aufgelöst werden kann.The typeResolver method should return null if it cannot resolve the type. Wenn typeResolver zurück null gibt und throwOnError GetType den Wert TypeLoadExceptionhat, löst diese Überladung von eine aus. trueIf typeResolver returns null and throwOnError is true, this overload of GetType throws a TypeLoadException.

Die Auswirkungen verschiedener Optionen für die Typauflösung werden als Tabelle im Abschnitt gemischte Namensauflösung für einfache und durch assemblyqualifizierte Typnamen angezeigt.The effects of different type resolution options are displayed as a table in the Mixed Name Resolution section, for simple and assembly-qualified type names.

Auflösen von UntertypenResolving Nested Types

Wenn typeName ein ein Typ ist, wird nur der Name des äußersten enthaltenden Typs an das- typeResolverEreignis übermittelt.If typeName is a nested type, only the name of the outermost containing type is passed to typeResolver. Wenn typeResolver diesen Typ zurückgibt, GetNestedType wird die Methode rekursiv aufgerufen, bis der innerste, nicht aufgelöste Typ aufgelöst wurde.When typeResolver returns this type, the GetNestedType method is called recursively until the innermost nested type has been resolved.

Auflösen von generischen TypenResolving Generic Types

GetType Wird rekursiv aufgerufen, um generische Typen aufzulösen: Zuerst können Sie den generischen Typ selbst auflösen und dann seine Typargumente auflösen.The GetType is called recursively to resolve generic types: First to resolve the generic type itself, and then to resolve its type arguments. Wenn ein Typargument generisch ist, GetType wird rekursiv aufgerufen, um die Typargumente aufzulösen, usw.If a type argument is generic, GetType is called recursively to resolve its type arguments, and so on.

Die Kombination assemblyResolver von typeResolver und, die Sie bereitstellen, muss in der Lage sein, alle Ebenen dieser Rekursion aufzulösen.The combination of assemblyResolver and typeResolver that you provide must be capable of resolving all levels of this recursion. Nehmen Sie beispielsweise an, Sie assemblyResolver stellen ein bereit, das MyAssemblydas Laden von steuert.For example, suppose you supply an assemblyResolver that controls the loading of MyAssembly. Angenommen, Sie möchten den generischen Typ Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic) auflösen.Suppose you want to resolve the generic type Dictionary<string, MyType> (Dictionary(Of String, MyType) in Visual Basic). Sie können den folgenden generischen Typnamen übergeben:You might pass the following generic type name:

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

Beachten Sie MyType , dass das einzige durch die Assembly qualifizierte Typargument ist.Notice that MyType is the only assembly-qualified type argument. Die Namen Dictionary<TKey,TValue> der-Klasse String und der-Klasse sind nicht assemblyqualifiziert.The names of the Dictionary<TKey,TValue> and String classes are not assembly-qualified. Ihr typeResolver muss in der Lage sein, eine Assembly nulloder zu verarbeiten, da null Sie Dictionary<TKey,TValue> für Stringund empfängt.Your typeResolver must be able handle either an assembly or null, because it will receive null for Dictionary<TKey,TValue> and String. Dieser Fall kann verarbeitet werden, indem eine Überladung der GetType -Methode aufgerufen wird, die eine Zeichenfolge annimmt, da sich beide nicht qualifizierten Typnamen in "mscorlib. dll" befinden:It can handle that case by calling an overload of the GetType method that takes a string, because both of the unqualified type names are in Mscorlib.dll:

Type t = Type.GetType(test,
                      (aName) => aName.Name == "MyAssembly" ? 
                          Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : null,
                      (assem, name, ignore) => assem == null ? 
                          Type.GetType(name, false, ignore) : 
                              assem.GetType(name, false, ignore)
                     ); 

Die assemblyResolver -Methode wird nicht für den Wörter Buchtyp und den Zeichen Folgentyp aufgerufen, da diese Typnamen nicht assemblyqualifiziert sind.The assemblyResolver method is not called for the dictionary type and the string type, because those type names are not assembly-qualified.

Nehmen Sie nun an, System.Stringdass anstelle von der erste generische Argumenttyp ist YourAssembly YourType, von:Now suppose that instead of System.String, the first generic argument type is YourType, from YourAssembly:

"System.Collections.Generic.Dictionary`2[[YourNamespace.YourType, YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null], [MyNamespace.MyType, MyAssembly]]"  

Da es sich bei dieser Assembly weder um mscorlib. dll noch um die derzeit ausgeführte YourType Assembly handelt, kann keine Auflösung ohne einen assemblyqualifizierten Namen ausgeführt werden.Because this assembly is neither Mscorlib.dll nor the currently executing assembly, you cannot resolve YourType without an assembly-qualified name. Da Ihr assemblyResolve rekursiv aufgerufen wird, muss es in der Lage sein, diesen Fall zu verarbeiten.Because your assemblyResolve will be called recursively, it must be able to handle this case. Anstatt für andere null Assemblys als MyAssemblyzurückzugeben, führt es nun eine assemblyauslastung mithilfe des bereitgestellten AssemblyName -Objekts aus.Instead of returning null for assemblies other than MyAssembly, it now performs an assembly load using the supplied AssemblyName object.

Type t2 = Type.GetType(test,
                       (aName) => aName.Name == "MyAssembly" ? 
                           Assembly.LoadFrom(@".\MyPath\v5.0\MyAssembly.dll") : 
                           Assembly.Load(aName),
                       (assem, name, ignore) => assem == null ? 
                           Type.GetType(name, false, ignore) : 
                               assem.GetType(name, false, ignore), true
                      ); 

Zurück zu den Verwendungs hinweisen.Back to Usage Notes.

Auflösen von Typnamen mit SonderzeichenResolving Type Names with Special Characters

Bestimmte Zeichen haben eine besondere Bedeutung in qualifizierten Assemblynamen.Certain characters have special meanings in assembly-qualified names. Wenn ein einfacher Typname diese Zeichen enthält, führen die Zeichen zu Analyse Fehlern, wenn der einfache Name Teil eines durch die Assembly qualifizierten Namens ist.If a simple type name contains these characters, the characters cause parsing errors when the simple name is part of an assembly-qualified name. Um die Analyse-Fehler zu vermeiden, müssen Sie die Sonderzeichen mit einem umgekehrten Schrägstrich versehen, bevor Sie den mit der Assembly gekennzeichneten GetType Namen an die-Methode übergeben können.To avoid the parsing errors, you must escape the special characters with a backslash before you can pass the assembly-qualified name to the GetType method. Wenn ein Typ beispielsweise den Namen Strange]Typehat, muss das Escapezeichen vor der eckigen Klammer wie folgt hinzugefügt werden:. Strange\]TypeFor example, if a type is named Strange]Type, the escape character must be added ahead of the square bracket as follows: Strange\]Type.

Hinweis

Namen mit solchen Sonderzeichen können nicht in Visual Basic oder C#erstellt werden, Sie können jedoch mithilfe von Microsoft Intermediate Language (MSIL) oder durch das Ausgeben dynamischer Assemblys erstellt werden.Names with such special characters cannot be created in Visual Basic or C#, but can be created by using Microsoft intermediate language (MSIL) or by emitting dynamic assemblies.

In der folgenden Tabelle werden die Sonderzeichen für Typnamen angezeigt.The following table shows the special characters for type names.

ZeichenCharacter BedeutungMeaning
,Komma, (comma) Trennzeichen für durch die Assembly qualifizierte Namen.Delimiter for assembly-qualified names.
[](eckige Klammern)[] (square brackets) Als suffixpaar gibt einen Arraytyp an. als Trennzeichen Paar schließt generische Argumentlisten und assemblyqualifizierte Namen ein.As a suffix pair, indicates an array type; as a delimiter pair, encloses generic argument lists and assembly-qualified names.
&kaufmännisches und& (ampersand) Als Suffix gibt an, dass ein Typ ein Verweistyp ist.As a suffix, indicates that a type is a reference type.
* (Sternchen)* (asterisk) Als Suffix gibt an, dass ein Typ ein Zeigertyp ist.As a suffix, indicates that a type is a pointer type.
+ZZ+ (plus) Trennzeichen für geschvelbte Typen.Delimiter for nested types.
\umgekehrten Schrägstrich\ (backslash) Escapezeichen.Escape character.

Eigenschaften wie AssemblyQualifiedName geben Zeichen folgen mit Escapezeichen zurück.Properties such as AssemblyQualifiedName return correctly escaped strings. Sie müssen ordnungsgemäß Escapezeichen folgen GetType an die-Methode übergeben.You must pass correctly escaped strings to the GetType method. Die GetType -Methode übergibt wiederum ordnungsgemäß Escapenamen typeResolver an und an die Standardmethoden für die Typauflösung.In turn, the GetType method passes correctly escaped names to typeResolver and to the default type resolution methods. Wenn Sie in typeResolvereinen Namen mit einem Namen ohne Escapezeichen vergleichen müssen, müssen Sie die Escapezeichen entfernen.If you need to compare a name to an unescaped name in typeResolver, you must remove the escape characters.

Zurück zu den Verwendungs hinweisen.Back to Usage Notes.

Auflösung gemischter NamenMixed Name Resolution

In der folgenden Tabelle werden die Interaktionen assemblyResolverzwischen typeResolver, und der Standard Namensauflösung für alle Kombinationen aus Typname und Assemblyname in typeNamezusammengefasst:The following table summarizes the interactions between assemblyResolver, typeResolver, and default name resolution, for all combinations of type name and assembly name in typeName:

Inhalt des TypnamensContents of type name AssemblyResolver-MethodeAssembly resolver method Typresolver-MethodeType resolver method ErgebnisResult
Typ, Assemblytype, assembly NULLnull NULLnull Äquivalent zum Aufrufen der Type.GetType(String, Boolean, Boolean) -Methoden Überladung.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload.
Typ, Assemblytype, assembly bietenprovided NULLnull assemblyResolverGibt die Assembly zurück oder null gibt zurück, wenn die Assembly nicht aufgelöst werden kann.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Wenn die Assembly aufgelöst wird, Assembly.GetType(String, Boolean, Boolean) wird die-Methoden Überladung verwendet, um den Typ aus der Assembly zu laden; andernfalls gibt es keinen Versuch, den Typ aufzulösen.If the assembly is resolved, the Assembly.GetType(String, Boolean, Boolean) method overload is used to load the type from the assembly; otherwise, there is no attempt to resolve the type.
Typ, Assemblytype, assembly NULLnull bietenprovided Entspricht dem Umbenennen des Assemblynamens in ein AssemblyName Objekt und dem Aufruf der Assembly.Load(AssemblyName) -Methoden Überladung, um die Assembly abzurufen.Equivalent to converting the assembly name to an AssemblyName object and calling the Assembly.Load(AssemblyName) method overload to get the assembly. Wenn die Assembly aufgelöst wird, wird Sie an typeResolverweitergegeben. andernfalls wird nicht aufgerufen, typeResolver und es wird nicht versucht, den Typ aufzulösen.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
Typ, Assemblytype, assembly bietenprovided bietenprovided assemblyResolverGibt die Assembly zurück oder null gibt zurück, wenn die Assembly nicht aufgelöst werden kann.assemblyResolver returns the assembly or returns null if it cannot resolve the assembly. Wenn die Assembly aufgelöst wird, wird Sie an typeResolverweitergegeben. andernfalls wird nicht aufgerufen, typeResolver und es wird nicht versucht, den Typ aufzulösen.If the assembly is resolved, it is passed to typeResolver; otherwise, typeResolver is not called and there is no further attempt to resolve the type.
Typtype NULL, bereitgestelltnull, provided NULLnull Äquivalent zum Aufrufen der Type.GetType(String, Boolean, Boolean) -Methoden Überladung.Equivalent to calling the Type.GetType(String, Boolean, Boolean) method overload. Da der Assemblyname nicht angegeben wird, werden nur die Datei "mscorlib. dll" und die derzeit ausgeführte Assembly durchsucht.Because the assembly name is not provided, only Mscorlib.dll and the currently executing assembly are searched. Wenn assemblyResolver angegeben wird, wird Sie ignoriert.If assemblyResolver is provided, it is ignored.
Typtype NULL, bereitgestelltnull, provided bietenprovided typeResolverwird aufgerufen, und null wird für die Assembly übermittelt.typeResolver is called, and null is passed for the assembly. typeResolverkann einen Typ aus einer beliebigen Assembly bereitstellen, einschließlich Assemblys, die für den Zweck geladen werden.typeResolver can provide a type from any assembly, including assemblies it loads for the purpose. Wenn assemblyResolver angegeben wird, wird Sie ignoriert.If assemblyResolver is provided, it is ignored.
Assemblyassembly NULL, bereitgestelltnull, provided NULL, bereitgestelltnull, provided Eine FileLoadException wird ausgelöst, da der AssemblyName so analysiert wird, als wäre er ein durch eine Assembly qualifizierter Typname.A FileLoadException is thrown, because the assembly name is parsed as if it were an assembly-qualified type name. Dies führt zu einem ungültigen Assemblynamen.This results in an invalid assembly name.

Zurück zu: Verwendungs Hinweise, Auflösenvon Assemblys, Auflösen von Typen.Back to: Usage Notes, Resolving Assemblies, Resolving Types.

Gilt für: