Generische Typen und Reflexion

Da die Common Language Runtime (CLR) zur Laufzeit Zugriff auf generische Typinformationen hat, können Sie spiegelung verwenden, um Informationen zu generischen Typen auf die gleiche Weise wie für nichtgenerische Typen abzurufen. Weitere Informationen finden Sie unter Generics in der Runtime.

Der System.Reflection.Emit Namespace enthält auch neue Member, die Generika unterstützen. Weitere Informationen finden Sie unter So definieren Sie einen generischen Typ mit Reflection Emit.

Eine Liste der invarianten Bedingungen für Begriffe, die in generischer Reflexion verwendet werden, finden Sie in den IsGenericType Eigenschaftenshinweisen:

  • IsGenericType: Gibt true zurück, wenn ein Typ generisch ist.
  • GetGenericArguments: Gibt ein Array von Type Objekten zurück, die die 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 generische Methodendefinition ab, die den Typparameter deklariert hat.
  • IsGenericParameter: Ruft einen Wert ab, der angibt, ob der Aktuelle Type einen Typparameter eines generischen Typs oder einer Methodendefinition darstellt.
  • IsGenericTypeDefinition: Ruft einen Wert ab, der angibt, ob der Aktuelle Type eine generische Typdefinition darstellt, aus der andere generische Typen erstellt werden können. Gibt true zurück, wenn der Typ die Definition eines generischen Typs darstellt.
  • DeclaringMethod: Gibt die generische Methode zurück, die den aktuellen generischen Typparameter definiert hat, oder null, wenn der Typparameter nicht durch eine generische Methode definiert wurde.
  • MakeGenericType: Ersetzt die Elemente eines Arrays von Typen für die Typparameter der aktuellen generischen Typdefinition und gibt ein Type Objekt zurück, das den resultierenden konstruierten Typ darstellt.

Darüber hinaus ermöglichen Mitglieder 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 der aktuelle wert die Definition einer generischen MethodInfo Methode darstellt.
  • MakeGenericMethod: Ersetzt die Elemente eines Arrays von Typen für die Typparameter der aktuellen generischen Methodendefinition und gibt ein MethodInfo Objekt zurück, das die resultierende konstruierte Methode darstellt.

Siehe auch