Generische Typen und Reflexion

Da die Common Language Runtime (CLR) über Zugriff auf generische Typinformationen zur Laufzeit verfügt, können Sie die Reflexion zum Abrufen von Informationen über generische Typen genauso so verwenden, wie Sie sie für nicht generische Typen verwenden. Weitere Informationen finden Sie unter Generika in der Runtime.

Der System.Reflection.Emit-Namespace enthält auch neue Member, die Generics unterstützen. Weitere Informationen finden Sie unter How to: Definieren eines generischen Typs mit Reflektionsausgabe.

Eine Liste der invarianten Bedingungen für Ausdrücke, die für die generische Reflexion verwendet werden, finden Sie in den Hinweisen zur Eigenschaft IsGenericType:

  • IsGenericType: Gibt TRUE zurück, wenn ein Typ generisch ist.
  • GetGenericArguments: Gibt ein Array von Type-Objekten zurück, die die bereitgestellten Typargumente für einen konstruierten Typ oder die Typparameter einer generischen Typdefinition darstellen.
  • GetGenericTypeDefinition: Gibt die zugrunde liegende generische Typdefinition für den aktuellen konstruierten Typ zurück.
  • GetGenericParameterConstraints: Gibt ein Array von Type-Objekten zurück, die die Einschränkungen für den aktuellen generischen Typparameter darstellen.
  • ContainsGenericParameters: Gibt TRUE zurück, wenn der Typ oder einer seiner einschließenden Typen oder Methoden Typparameter enthalten, für die keine bestimmten Typen angegeben wurden.
  • GenericParameterAttributes: Ruft eine Kombination von GenericParameterAttributes-Flags ab, die die speziellen Einschränkungen des aktuellen generischen Typparameters beschreiben.
  • GenericParameterPosition: Ruft für ein Type-Objekt, das einen Typparameter darstellt, die Position des Typparameters in der Typparameterliste der generischen Typdefinition oder generischen Methode ab, die den Typparameter deklariert.
  • IsGenericParameter: Ruft einen Wert ab, der angibt, ob der aktuelle Type einen Typparameter einer generischen Typ- oder Methodendefinition darstellt.
  • IsGenericTypeDefinition: Ruft einen Wert ab, der angibt, ob der aktuelle Type eine generische Typdefinition darstellt, aus der andere generische Typen konstruiert werden können. Gibt TRUE zurück, wenn der Typ die Definition eines generischen Typs darstellt
  • DeclaringMethod: Gibt die generische Methode, die den aktuellen generischen Typparameter definiert, oder NULL zurück, wenn der Typparameter nicht von einer generischen Methode definiert wurde.
  • MakeGenericType: Ersetzt die Elemente eines Arrays von Typen durch die Typparameter der aktuellen generischen Typdefinition und gibt ein Type-Objekt zurück, das den resultierenden konstruierten Typ darstellt.

Zusätzlich ermöglichen neue Member der MethodInfo-Klasse Laufzeitinformationen für generische Methoden. Eine Liste der invarianten Bedingungen für Ausdrücke, die für die Reflexion mit generischen Methoden verwendet werden, finden Sie unter den Hinweisen zur Eigenschaft IsGenericMethod:

  • IsGenericMethod: Gibt TRUE zurück, wenn eine Methode generisch ist.
  • GetGenericArguments: Gibt ein Array von Type-Objekten zurück, die die Typargumente einer konstruierten generischen Methode oder die Typparameter einer generischen Methodendefinition darstellen.
  • GetGenericMethodDefinition: Gibt die zugrunde liegende generische Methodendefinition für die aktuelle konstruierte Methode zurück.
  • ContainsGenericParameters: Gibt TRUE zurück, wenn die Methode oder einer ihrer einschließenden Typen Typparameter enthält, für die keine bestimmten Typen angegeben wurden.
  • IsGenericMethodDefinition: Gibt TRUE zurück, wenn die aktuelle MethodInfo die Definition einer generischen Methode darstellt.
  • MakeGenericMethod: Ersetzt die Elemente eines Arrays von Typen durch die Typparameter der aktuellen generischen Methodendefinition, und gibt ein MethodInfo-Objekt zurück, das die sich ergebende konstruierte Methode darstellt.

Siehe auch