Génériques et réflexion

Étant donné que le common language runtime (CLR) a accès aux informations concernant les types génériques au moment de l’exécution, vous pouvez utiliser la réflexion pour obtenir des informations sur les types génériques de la même manière que pour les types non génériques. Pour plus d’informations, consultez Génériques dans le Runtime.

L’espace de noms System.Reflection.Emit contient également de nouveaux membres qui prennent en charge les génériques. Consultez Comment : définir un type générique avec l’émission de réflexion.

Pour obtenir la liste des conditions invariantes pour les termes utilisés dans la réflexion générique, consultez les remarques sur la propriété IsGenericType :

  • IsGenericType : retourne la valeur true si un type est générique.
  • GetGenericArguments : retourne un tableau d’objets Type qui représentent les arguments de type fournis pour un type construit, ou les paramètres de type d’une définition de type générique.
  • GetGenericTypeDefinition : retourne la définition de type générique sous-jacente pour le type construit actuel.
  • GetGenericParameterConstraints : retourne un tableau d’objets Type représentant les contraintes qui s’exercent sur le paramètre de type générique actuel.
  • ContainsGenericParameters : retourne la valeur true si le type ou l’un de ses types ou méthodes englobants contient des paramètres de type pour lesquels des types spécifiques n’ont pas été fournis.
  • GenericParameterAttributes : obtient une combinaison d’indicateurs GenericParameterAttributes décrivant les contraintes spéciales du paramètre de type générique actuel.
  • GenericParameterPosition : pour un objet Type qui représente un paramètre de type, obtient la position du paramètre de type dans la liste de paramètres de type de la définition de type générique ou de la définition de méthode générique qui a déclaré le paramètre de type.
  • IsGenericParameter : obtient une valeur indiquant si le Type actuel représente un paramètre de type d’un type générique ou d’une définition de méthode.
  • IsGenericTypeDefinition : obtient une valeur qui indique si le Type actuel représente une définition de type générique, à partir de laquelle d’autres types génériques peuvent être construits. Retourne la valeur true si le type représente la définition d’un type générique.
  • DeclaringMethod : retourne la méthode générique qui a défini le paramètre de type générique actuel, ou Null si le paramètre de type n’a pas été défini par une méthode générique.
  • MakeGenericType : substitue les éléments d’un tableau de types aux paramètres de type de la définition du type générique actuel et retourne un objet Type qui représente le type construit résultant.

De plus, les membres de la classe MethodInfo permettent la génération d’informations d’exécution pour les méthodes génériques. Pour obtenir la liste des conditions invariantes des termes utilisés pour réfléchir les méthodes génériques, consultez les remarques sur la propriété IsGenericMethod :

  • IsGenericMethod : retourne la valeur true si une méthode est générique.
  • GetGenericArguments : retourne un tableau d’objets de type qui représentent les arguments de type d’une méthode générique construite, ou les paramètres de type d’une définition de méthode générique.
  • GetGenericMethodDefinition : retourne la définition de méthode générique sous-jacente pour la méthode construite actuelle.
  • ContainsGenericParameters : retourne la valeur true si la méthode ou l’un de ses types englobants contient des paramètres de type pour lesquels des types spécifiques n’ont pas été fournis.
  • IsGenericMethodDefinition : retourne la valeur true si le MethodInfo actuel représente la définition d’une méthode générique.
  • MakeGenericMethod : substitue les éléments d’un tableau de types aux paramètres de type de la définition de méthode générique actuelle et retourne un objet MethodInfo représentant la méthode construite résultante.

Voir aussi