Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

GenericTypeParameterBuilder, classe

Définit et crée des paramètres de type générique pour les types et les méthodes génériques définis dynamiquement. Cette classe ne peut pas être héritée.

System.Object
  System.Reflection.MemberInfo
    System.Type
      System.Reflection.Emit.GenericTypeParameterBuilder

Espace de noms :  System.Reflection.Emit
Assembly :  mscorlib (dans mscorlib.dll)
[ComVisibleAttribute(true)]
public sealed class GenericTypeParameterBuilder : Type

Le type GenericTypeParameterBuilder expose les membres suivants.

  Nom Description
Propriété publique Assembly Obtient un objet Assembly représentant l'assembly dynamique qui contient la définition de type générique à laquelle appartient le paramètre de type actuel. (Substitue Type.Assembly.)
Propriété publique AssemblyQualifiedName Obtient null dans tous les cas. (Substitue Type.AssemblyQualifiedName.)
Propriété publique Attributes Obtient les attributs associés à Type. (Hérité de Type.)
Propriété publique BaseType Obtient la contrainte de type de base du paramètre de type générique actuel. (Substitue Type.BaseType.)
Propriété publique ContainsGenericParameters Obtient true dans tous les cas. (Substitue Type.ContainsGenericParameters.)
Propriété publique DeclaringMethod Obtient un MethodInfo représentant la méthode de déclaration, si le GenericTypeParameterBuilder actuel représente un paramètre de type d'une méthode générique. (Substitue Type.DeclaringMethod.)
Propriété publique DeclaringType Obtient la définition de type générique ou la définition de méthode générique à laquelle appartient le paramètre de type générique. (Substitue Type.DeclaringType.)
Propriété publique FullName Obtient null dans tous les cas. (Substitue Type.FullName.)
Propriété publique GenericParameterAttributes Obtient une combinaison d'indicateurs GenericParameterAttributes qui décrivent la covariance et des contraintes spéciales du paramètre de type générique actuel. (Hérité de Type.)
Propriété publique GenericParameterPosition Obtient la position du paramètre de type dans la liste des paramètres de type du type générique ou de la méthode qui a déclaré le paramètre. (Substitue Type.GenericParameterPosition.)
Propriété publique GUID Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GUID.)
Propriété publique HasElementType Obtient une valeur indiquant si le Type en cours englobe ou se réfère à un autre type, c'est-à-dire si le Type en cours est un tableau ou un pointeur ou encore s'il est passé par référence. (Hérité de Type.)
Propriété publique IsAbstract Obtient une valeur indiquant si le Type est abstrait et doit être substitué. (Hérité de Type.)
Propriété publique IsAnsiClass Obtient une valeur indiquant si l'attribut de format de chaîne AnsiClass est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsArray Obtient une valeur indiquant si Type est un tableau. (Hérité de Type.)
Propriété publique IsAutoClass Obtient une valeur indiquant si l'attribut de format de chaîne AutoClass est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsAutoLayout Obtient une valeur indiquant si l'attribut de présentation de classe AutoLayout est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsByRef Obtient une valeur indiquant si Type est passé par référence. (Hérité de Type.)
Propriété publique IsClass Obtient une valeur indiquant si le Type est une classe, c'est-à-dire ni un type valeur ni une interface. (Hérité de Type.)
Propriété publique IsCOMObject Obtient une valeur indiquant si Type est un objet COM. (Hérité de Type.)
Propriété publique IsContextful Obtient une valeur indiquant si Type peut être hébergé dans un contexte. (Hérité de Type.)
Propriété publique IsEnum Obtient une valeur indiquant si le Type actuel représente une énumération. (Hérité de Type.)
Propriété publique IsExplicitLayout Obtient une valeur indiquant si l'attribut de présentation de classe ExplicitLayout est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsGenericParameter Obtient true dans tous les cas. (Substitue Type.IsGenericParameter.)
Propriété publique IsGenericType Retourne false dans tous les cas. (Substitue Type.IsGenericType.)
Propriété publique IsGenericTypeDefinition Obtient false dans tous les cas. (Substitue Type.IsGenericTypeDefinition.)
Propriété publique IsImport Obtient une valeur qui indique si le Type a un attribut appliqué ComImportAttribute, indiquant qu'il a été importé d'une bibliothèque de types COM. (Hérité de Type.)
Propriété publique IsInterface Obtient une valeur indiquant si le Type est une interface, c'est-à-dire ni une classe ni un type valeur. (Hérité de Type.)
Propriété publique IsLayoutSequential Obtient une valeur indiquant si l'attribut de présentation de classe SequentialLayout est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsMarshalByRef Obtient une valeur indiquant si Type est marshalé par référence. (Hérité de Type.)
Propriété publique IsNested Obtient une valeur qui indique si l'objet Type actuel représente un type dont la définition est imbriquée à l'intérieur de la définition d'un autre type. (Hérité de Type.)
Propriété publique IsNestedAssembly Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans son propre assembly. (Hérité de Type.)
Propriété publique IsNestedFamANDAssem Obtient une valeur indiquant si le Type est imbriqué et visible uniquement par rapport aux classes qui appartiennent à la fois à sa propre famille et à son propre assembly. (Hérité de Type.)
Propriété publique IsNestedFamily Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans sa propre famille. (Hérité de Type.)
Propriété publique IsNestedFamORAssem Obtient une valeur indiquant si le Type est imbriqué et visible uniquement par rapport aux classes qui appartiennent à sa propre famille ou à son propre assembly. (Hérité de Type.)
Propriété publique IsNestedPrivate Obtient une valeur indiquant si le Type est imbriqué et déclaré privé. (Hérité de Type.)
Propriété publique IsNestedPublic Obtient une valeur indiquant si une classe est imbriquée et déclarée publique. (Hérité de Type.)
Propriété publique IsNotPublic Obtient une valeur indiquant si Type n'est pas déclaré public. (Hérité de Type.)
Propriété publique IsPointer Obtient une valeur indiquant si Type est un pointeur. (Hérité de Type.)
Propriété publique IsPrimitive Obtient une valeur indiquant si le Type est l'un des types primitifs. (Hérité de Type.)
Propriété publique IsPublic Obtient une valeur indiquant si Type est déclaré public. (Hérité de Type.)
Propriété publique IsSealed Obtient une valeur indiquant si le Type est déclaré sealed. (Hérité de Type.)
Propriété publique IsSecurityCritical Obtient une valeur qui indique si le type actuel est critique de sécurité (security-critical) ou critique sécurisé (security-safe-critical) au niveau de confiance actuel et peut par conséquent exécuter des opérations critiques. (Hérité de Type.)
Propriété publique IsSecuritySafeCritical Obtient une valeur qui indique si le type actuel est critique sécurisé au niveau de confiance actuel, autrement dit s'il peut exécuter des opérations critiques et être accessible par du code transparent. (Hérité de Type.)
Propriété publique IsSecurityTransparent Obtient une valeur qui indique si le type actuel est transparent au niveau de confiance actuel et ne peut par conséquent pas exécuter d'opérations critiques. (Hérité de Type.)
Propriété publique IsSerializable Obtient une valeur indiquant si le Type est sérialisable. (Hérité de Type.)
Propriété publique IsSpecialName Obtient une valeur indiquant si le Type a un nom qui nécessite un traitement spécial. (Hérité de Type.)
Propriété publique IsUnicodeClass Obtient une valeur indiquant si l'attribut de format de chaîne UnicodeClass est sélectionné pour le Type. (Hérité de Type.)
Propriété publique IsValueType Obtient une valeur indiquant si le Type est un type valeur. (Hérité de Type.)
Propriété publique IsVisible Obtient une valeur qui indique si Type est accessible par code à l'extérieur de l'assembly. (Hérité de Type.)
Propriété publique MemberType Obtient une valeur MemberTypes qui indique que ce membre est un type ou un type imbriqué. (Hérité de Type.)
Propriété publique MetadataToken Obtient une valeur qui identifie un élément de métadonnées. (Hérité de MemberInfo.)
Propriété publique Module Obtient le module dynamique qui contient le paramètre de type générique. (Substitue Type.Module.)
Propriété publique Name Obtient le nom du paramètre de type générique. (Substitue MemberInfo.Name.)
Propriété publique Namespace Obtient null dans tous les cas. (Substitue Type.Namespace.)
Propriété publique ReflectedType Obtient l'objet Type qui a été utilisé pour obtenir GenericTypeParameterBuilder. (Substitue Type.ReflectedType.)
Propriété publique StructLayoutAttribute Obtient un StructLayoutAttribute qui décrit la disposition du type actuel. (Hérité de Type.)
Propriété publique TypeHandle Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.TypeHandle.)
Propriété publique TypeInitializer Obtient l'initialiseur de Type. (Hérité de Type.)
Propriété publique UnderlyingSystemType Obtient le paramètre de type générique actuel. (Substitue Type.UnderlyingSystemType.)
Début
  Nom Description
Méthode publique Equals(Object) Tests si l'objet donné est une instance de EventToken et est égal à l'instance actuelle. (Substitue Type.Equals(Object).)
Méthode publique Equals(Type) Détermine si le type de système sous-jacent du Type en cours est identique au type de système sous-jacent du Type spécifié. (Hérité de Type.)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique FindInterfaces Retourne un tableau d'objets Type représentant une liste filtrée d'interfaces implémentées ou héritées par le Type en cours. (Hérité de Type.)
Méthode publique FindMembers Retourne un tableau filtré d'objets MemberInfo du type du membre spécifié. (Hérité de Type.)
Méthode publique GetArrayRank Obtient le nombre de dimensions dans un Array. (Hérité de Type.)
Méthode protégée GetAttributeFlagsImpl En cas de substitution dans une classe dérivée, implémente la propriété Attributes et obtient un masque de bits indiquant les attributs associés à Type. (Hérité de Type.)
Méthode publique GetConstructor(Type[]) Recherche un constructeur d'instance public dont les paramètres correspondent aux types contenus dans le tableau spécifié. (Hérité de Type.)
Méthode publique GetConstructor(BindingFlags, Binder, Type[], ParameterModifier[]) Recherche un constructeur dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.)
Méthode publique GetConstructor(BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) Recherche un constructeur dont les paramètres correspondent aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d'appel indiquées. (Hérité de Type.)
Méthode protégée GetConstructorImpl En cas de substitution dans une classe dérivée, recherche un constructeur dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison et de la convention d'appel spécifiées. (Hérité de Type.)
Méthode publique GetConstructors() Retourne tous les constructeurs publics définis pour le Type en cours. (Hérité de Type.)
Méthode publique GetConstructors(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetConstructors(BindingFlags).)
Méthode publique GetCustomAttributes(Boolean) Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.GetCustomAttributes(Boolean).)
Méthode publique GetCustomAttributes(Type, Boolean) Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.GetCustomAttributes(Type, Boolean).)
Méthode publique GetCustomAttributesData Retourne une liste d'objets CustomAttributeData représentant des données relatives aux attributs qui ont été appliqués au membre cible. (Hérité de MemberInfo.)
Méthode publique GetDefaultMembers Recherche les membres définis pour le Type en cours dont le DefaultMemberAttribute est défini. (Hérité de Type.)
Méthode publique GetElementType Lève une exception NotSupportedException dans tous les cas. (Substitue Type.GetElementType().)
Méthode publique GetEnumName Retourne le nom de la constante qui a la valeur spécifiée, pour le type énumération actuel. (Hérité de Type.)
Méthode publique GetEnumNames Retourne les noms des membres du type énumération actuel. (Hérité de Type.)
Méthode publique GetEnumUnderlyingType Retourne le type sous-jacent du type énumération actuel. (Hérité de Type.)
Méthode publique GetEnumValues Retourne un tableau des valeurs des constantes dans le type énumération actuel. (Hérité de Type.)
Méthode publique GetEvent(String) Retourne l'objet EventInfo représentant l'événement public spécifié. (Hérité de Type.)
Méthode publique GetEvent(String, BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvent(String, BindingFlags).)
Méthode publique GetEvents() Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvents().)
Méthode publique GetEvents(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvents(BindingFlags).)
Méthode publique GetField(String) Recherche le champ public portant le nom spécifié. (Hérité de Type.)
Méthode publique GetField(String, BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetField(String, BindingFlags).)
Méthode publique GetFields() Retourne tous les champs publics du Type en cours. (Hérité de Type.)
Méthode publique GetFields(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetFields(BindingFlags).)
Méthode publique GetGenericArguments Non valide pour les paramètres de type générique. (Substitue Type.GetGenericArguments().)
Méthode publique GetGenericParameterConstraints Retourne un tableau d'objets Type qui représentent les contraintes qui s'exercent sur le paramètre de type générique actuel. (Hérité de Type.)
Méthode publique GetGenericTypeDefinition Non valide pour les paramètres de type générique. (Substitue Type.GetGenericTypeDefinition().)
Méthode publique GetHashCode Retourne un code de hachage entier 32 bits pour l'instance actuelle. (Substitue Type.GetHashCode().)
Méthode publique GetInterface(String) Recherche l'interface avec le nom spécifié. (Hérité de Type.)
Méthode publique GetInterface(String, Boolean) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterface(String, Boolean).)
Méthode publique GetInterfaceMap Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterfaceMap(Type).)
Méthode publique GetInterfaces Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterfaces().)
Méthode publique GetMember(String) Recherche les membres publics portant le nom spécifié. (Hérité de Type.)
Méthode publique GetMember(String, BindingFlags) Recherche les membres spécifiés, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.)
Méthode publique GetMember(String, MemberTypes, BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMember(String, MemberTypes, BindingFlags).)
Méthode publique GetMembers() Retourne tous les membres publics du Type en cours. (Hérité de Type.)
Méthode publique GetMembers(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMembers(BindingFlags).)
Méthode publique GetMethod(String) Recherche la méthode publique avec le nom spécifié. (Hérité de Type.)
Méthode publique GetMethod(String, BindingFlags) Recherche la méthode spécifiée, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.)
Méthode publique GetMethod(String, Type[]) Recherche la méthode publique spécifiée dont les paramètres correspondent aux types d'arguments spécifiés. (Hérité de Type.)
Méthode publique GetMethod(String, Type[], ParameterModifier[]) Recherche la méthode publique spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés. (Hérité de Type.)
Méthode publique GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[]) Recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.)
Méthode publique GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[]) Recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison et la convention d'appel indiquées. (Hérité de Type.)
Méthode protégée GetMethodImpl En cas de substitution dans une classe dérivée, recherche la méthode spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, à l'aide des contraintes de liaison et de la convention d'appel spécifiées. (Hérité de Type.)
Méthode publique GetMethods() Retourne toutes les méthodes publiques du Type en cours. (Hérité de Type.)
Méthode publique GetMethods(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMethods(BindingFlags).)
Méthode publique GetNestedType(String) Recherche le type imbriqué public avec le nom spécifié. (Hérité de Type.)
Méthode publique GetNestedType(String, BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetNestedType(String, BindingFlags).)
Méthode publique GetNestedTypes() Retourne les types publics imbriqués dans le Type actuel. (Hérité de Type.)
Méthode publique GetNestedTypes(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetNestedTypes(BindingFlags).)
Méthode publique GetProperties() Retourne toutes les propriétés publiques du Type en cours. (Hérité de Type.)
Méthode publique GetProperties(BindingFlags) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetProperties(BindingFlags).)
Méthode publique GetProperty(String) Recherche la propriété publique avec le nom spécifié. (Hérité de Type.)
Méthode publique GetProperty(String, BindingFlags) Recherche la propriété spécifiée, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.)
Méthode publique GetProperty(String, Type) Recherche la propriété publique à l'aide du nom et du type de retour spécifiés. (Hérité de Type.)
Méthode publique GetProperty(String, Type[]) Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d'arguments spécifiés. (Hérité de Type.)
Méthode publique GetProperty(String, Type, Type[]) Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d'arguments spécifiés. (Hérité de Type.)
Méthode publique GetProperty(String, Type, Type[], ParameterModifier[]) Recherche la propriété publique spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés. (Hérité de Type.)
Méthode publique GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[]) Recherche la propriété spécifiée dont les paramètres correspondent aux types d'arguments et aux modificateurs spécifiés, en utilisant les contraintes de liaison indiquées. (Hérité de Type.)
Méthode protégée GetPropertyImpl En cas de substitution dans une classe dérivée, recherche la propriété spécifiée dont les paramètres correspondent aux types d'arguments et modificateurs spécifiés, en utilisant les contraintes de liaison indiquées. (Hérité de Type.)
Méthode publique GetType() Obtient le Type en cours. (Hérité de Type.)
Méthode protégée GetTypeCodeImpl Retourne le code du type sous-jacent du Type spécifié. (Hérité de Type.)
Méthode protégée HasElementTypeImpl En cas de substitution dans une classe dérivée, implémente la propriété HasElementType et détermine si le Type en cours englobe ou se réfère à un autre type ; c'est-à-dire si le Type en cours est un tableau ou un pointeur ou encore s'il est passé par référence. (Hérité de Type.)
Méthode publique InvokeMember(String, BindingFlags, Binder, Object, Object[]) Appelle le membre défini, à l'aide des contraintes de liaison spécifiées et correspondant à la liste d'arguments spécifiée. (Hérité de Type.)
Méthode publique InvokeMember(String, BindingFlags, Binder, Object, Object[], CultureInfo) Appelle le membre spécifié, à l'aide des contraintes de liaison spécifiées et correspondant à la liste d'arguments et à la culture spécifiées. (Hérité de Type.)
Méthode publique InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]) Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).)
Méthode protégée IsArrayImpl En cas de substitution dans une classe dérivée, implémente la propriété IsArray et détermine si Type est un tableau. (Hérité de Type.)
Méthode publique IsAssignableFrom Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.IsAssignableFrom(Type).)
Méthode protégée IsByRefImpl En cas de substitution dans une classe dérivée, implémente la propriété IsByRef et détermine si le Type est passé par référence. (Hérité de Type.)
Méthode protégée IsCOMObjectImpl En cas de substitution dans une classe dérivée, implémente la propriété IsCOMObject et détermine si le Type est un objet COM. (Hérité de Type.)
Méthode protégée IsContextfulImpl Implémente la propriété IsContextful et détermine si Type peut être hébergé dans un contexte. (Hérité de Type.)
Méthode publique IsDefined Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.IsDefined(Type, Boolean).)
Méthode publique IsEnumDefined Retourne une valeur qui indique si la valeur spécifiée existe dans le type énumération actuel. (Hérité de Type.)
Méthode publique IsEquivalentTo Détermine si deux types COM ont la même identité et prennent en charge l'équivalence de type. (Hérité de Type.)
Méthode publique IsInstanceOfType Détermine si l'objet spécifié est une instance du Type en cours. (Hérité de Type.)
Méthode protégée IsMarshalByRefImpl Implémente la propriété IsMarshalByRef et détermine si le Type est marshalé par référence. (Hérité de Type.)
Méthode protégée IsPointerImpl En cas de substitution dans une classe dérivée, implémente la propriété IsPointer et détermine si le Type est un pointeur. (Hérité de Type.)
Méthode protégée IsPrimitiveImpl En cas de substitution dans une classe dérivée, implémente la propriété IsPrimitive et détermine si Type est l'un des types primitifs. (Hérité de Type.)
Méthode publique IsSubclassOf Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.IsSubclassOf(Type).)
Méthode protégée IsValueTypeImpl Implémente la propriété IsValueType et détermine si le Type est un type valeur, c'est-à-dire ni une classe ni une interface. (Hérité de Type.)
Méthode publique MakeArrayType() Retourne le type d'un tableau unidimensionnel dont le type d'élément est le paramètre de type générique. (Substitue Type.MakeArrayType().)
Méthode publique MakeArrayType(Int32) Retourne le type d'un tableau dont le type d'élément est le paramètre de type générique, avec le nombre spécifié de dimensions. (Substitue Type.MakeArrayType(Int32).)
Méthode publique MakeByRefType Retourne un objet Type représentant le paramètre de type générique actuel lorsqu'il est passé en tant que paramètre de référence. (Substitue Type.MakeByRefType().)
Méthode publique MakeGenericType Non valide pour les paramètres de type générique incomplets. (Substitue Type.MakeGenericType(Type[]).)
Méthode publique MakePointerType Retourne un objet Type représentant un pointeur vers le paramètre de type générique actuel. (Substitue Type.MakePointerType().)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique SetBaseTypeConstraint Définit le type de base dont un type doit hériter afin d'être substitué au paramètre de type.
Méthode publique SetCustomAttribute(CustomAttributeBuilder) Définit un attribut personnalisé à l'aide d'un générateur d'attributs personnalisés.
Méthode publique SetCustomAttribute(ConstructorInfo, Byte[]) Définit un attribut personnalisé à l'aide d'un blob d'attribut personnalisé spécifié.
Méthode publique SetGenericParameterAttributes Définit les caractéristiques de variance et les contraintes spéciales du paramètre générique, telles que la contrainte de constructeur sans paramètre.
Méthode publique SetInterfaceConstraints Définit les interfaces qu'un type doit implémenter pour être substitué au paramètre de type.
Méthode publique ToString Renvoie une représentation sous forme de chaîne du paramètre de type générique actuel. (Substitue Type.ToString().)
Début
  Nom Description
Implémentation d'interface explicite Méthode privée _MemberInfo.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de MemberInfo.)
Implémentation d'interface explicite Méthode privée _MemberInfo.GetType Obtient un objet Type représentant la classe MemberInfo. (Hérité de MemberInfo.)
Implémentation d'interface explicite Méthode privée _MemberInfo.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface. (Hérité de MemberInfo.)
Implémentation d'interface explicite Méthode privée _MemberInfo.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de MemberInfo.)
Implémentation d'interface explicite Méthode privée _MemberInfo.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de MemberInfo.)
Implémentation d'interface explicite Méthode privée _Type.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Type.)
Implémentation d'interface explicite Méthode privée _Type.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées ensuite pour obtenir les informations de type d'une interface. (Hérité de Type.)
Implémentation d'interface explicite Méthode privée _Type.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Type.)
Implémentation d'interface explicite Méthode privée _Type.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Type.)
Début

Vous pouvez obtenir un tableau d'objets GenericTypeParameterBuilder en utilisant la méthode TypeBuilder.DefineGenericParameters pour ajouter des paramètres de type à un type dynamique et le transformer ainsi en type générique, ou en utilisant la méthode MethodBuilder.DefineGenericParameters pour ajouter des paramètres de type à une méthode dynamique. Utilisez les objets GenericTypeParameterBuilder pour ajouter des contraintes aux paramètres de type. Il existe trois types de contraintes :

  • La contrainte de type de base spécifie que tout type assigné au paramètre de type générique doit dériver d'un type de base particulier. Définissez cette contrainte en utilisant la méthode SetBaseTypeConstraint.

  • Une contrainte d'interface spécifie que tout type assigné au paramètre de type générique doit implémenter une interface particulière. Définissez les contraintes d'interface en utilisant la méthode SetInterfaceConstraints.

  • Les contraintes spéciales spécifient que tout type assigné au paramètre de type générique doit posséder un constructeur par défaut, être un type référence ou être un type valeur. Définissez les contraintes spéciales pour un paramètre de type en utilisant la méthode SetGenericParameterAttributes.

Les contraintes d'interface et contraintes spéciales ne peuvent pas être récupérées à l'aide des méthodes de la classe GenericTypeParameterBuilder. Lorsque vous avez créé le type générique qui contient les paramètres de type, vous pouvez utiliser son objet Type pour refléter les contraintes. Utilisez la méthode Type.GetGenericArguments pour obtenir les paramètres de type et, pour chaque paramètre de type, utilisez la méthode Type.GetGenericParameterConstraints afin d'obtenir la contrainte de type de base et les contraintes d'interface, ainsi que la propriété Type.GenericParameterAttributes pour obtenir les contraintes spéciales.

L'exemple de code suivant crée un type générique avec deux paramètres de type et les enregistre dans l'assembly GenericEmitExample1.dll. Vous pouvez utiliser le Ildasm.exe (Désassembleur MSIL) pour consulter les types générés. Pour obtenir une explication plus détaillée des étapes impliquées dans la définition d'un type générique dynamique, consultez Comment : définir un type générique avec l'émission de réflexion.


using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Collections.Generic;

// Define a trivial base class and two trivial interfaces 
// to use when demonstrating constraints.
//
public class ExampleBase {}

public interface IExampleA {}

public interface IExampleB {}

// Define a trivial type that can substitute for type parameter 
// TSecond.
//
public class ExampleDerived : ExampleBase, IExampleA, IExampleB {}


public class Example
{
    public static void Main()
    {
        // Define a dynamic assembly to contain the sample type. The
        // assembly will not be run, but only saved to disk, so
        // AssemblyBuilderAccess.Save is specified.
        //
        AppDomain myDomain = AppDomain.CurrentDomain;
        AssemblyName myAsmName = new AssemblyName("GenericEmitExample1");
        AssemblyBuilder myAssembly = 
            myDomain.DefineDynamicAssembly(myAsmName, 
                AssemblyBuilderAccess.RunAndSave);

        // An assembly is made up of executable modules. For a single-
        // module assembly, the module name and file name are the same 
        // as the assembly name. 
        //
        ModuleBuilder myModule = 
            myAssembly.DefineDynamicModule(myAsmName.Name, 
               myAsmName.Name + ".dll");

        // Get type objects for the base class trivial interfaces to
        // be used as constraints.
        //
        Type baseType = typeof(ExampleBase);
        Type interfaceA = typeof(IExampleA);
        Type interfaceB = typeof(IExampleB);

        // Define the sample type.
        //
        TypeBuilder myType = 
            myModule.DefineType("Sample", TypeAttributes.Public);

        Console.WriteLine("Type 'Sample' is generic: {0}", 
            myType.IsGenericType);

        // Define type parameters for the type. Until you do this, 
        // the type is not generic, as the preceding and following 
        // WriteLine statements show. The type parameter names are
        // specified as an array of strings. To make the code
        // easier to read, each GenericTypeParameterBuilder is placed
        // in a variable with the same name as the type parameter.
        // 
        string[] typeParamNames = {"TFirst", "TSecond"};
        GenericTypeParameterBuilder[] typeParams = 
            myType.DefineGenericParameters(typeParamNames);

        GenericTypeParameterBuilder TFirst = typeParams[0];
        GenericTypeParameterBuilder TSecond = typeParams[1];

        Console.WriteLine("Type 'Sample' is generic: {0}", 
            myType.IsGenericType);

        // Apply constraints to the type parameters.
        //
        // A type that is substituted for the first parameter, TFirst,
        // must be a reference type and must have a parameterless
        // constructor.
        TFirst.SetGenericParameterAttributes(
            GenericParameterAttributes.DefaultConstructorConstraint |
            GenericParameterAttributes.ReferenceTypeConstraint);

        // A type that is substituted for the second type
        // parameter must implement IExampleA and IExampleB, and
        // inherit from the trivial test class ExampleBase. The
        // interface constraints are specified as an array 
        // containing the interface types.
        TSecond.SetBaseTypeConstraint(baseType);
        Type[] interfaceTypes = {interfaceA, interfaceB};
        TSecond.SetInterfaceConstraints(interfaceTypes);

        // The following code adds a private field named ExampleField,
        // of type TFirst.
        FieldBuilder exField = 
            myType.DefineField("ExampleField", TFirst, 
                FieldAttributes.Private);

        // Define a static method that takes an array of TFirst and 
        // returns a List<TFirst> containing all the elements of 
        // the array. To define this method it is necessary to create
        // the type List<TFirst> by calling MakeGenericType on the
        // generic type definition, List<T>. (The T is omitted with
        // the typeof operator when you get the generic type 
        // definition.) The parameter type is created by using the
        // MakeArrayType method. 
        //
        Type listOf = typeof(List<>);
        Type listOfTFirst = listOf.MakeGenericType(TFirst);
        Type[] mParamTypes = {TFirst.MakeArrayType()};

        MethodBuilder exMethod = 
            myType.DefineMethod("ExampleMethod", 
                MethodAttributes.Public | MethodAttributes.Static, 
                listOfTFirst, 
                mParamTypes);

        // Emit the method body. 
        // The method body consists of just three opcodes, to load 
        // the input array onto the execution stack, to call the 
        // List<TFirst> constructor that takes IEnumerable<TFirst>,
        // which does all the work of putting the input elements into
        // the list, and to return, leaving the list on the stack. The
        // hard work is getting the constructor.
        // 
        // The GetConstructor method is not supported on a 
        // GenericTypeParameterBuilder, so it is not possible to get 
        // the constructor of List<TFirst> directly. There are two
        // steps, first getting the constructor of List<T> and then
        // calling a method that converts it to the corresponding 
        // constructor of List<TFirst>.
        //
        // The constructor needed here is the one that takes an
        // IEnumerable<T>. Note, however, that this is not the 
        // generic type definition of IEnumerable<T>; instead, the
        // T from List<T> must be substituted for the T of 
        // IEnumerable<T>. (This seems confusing only because both
        // types have type parameters named T. That is why this example
        // uses the somewhat silly names TFirst and TSecond.) To get
        // the type of the constructor argument, take the generic
        // type definition IEnumerable<T> (expressed as 
        // IEnumerable<> when you use the typeof operator) and 
        // call MakeGenericType with the first generic type parameter
        // of List<T>. The constructor argument list must be passed
        // as an array, with just one argument in this case.
        // 
        // Now it is possible to get the constructor of List<T>,
        // using GetConstructor on the generic type definition. To get
        // the constructor of List<TFirst>, pass List<TFirst> and
        // the constructor from List<T> to the static
        // TypeBuilder.GetConstructor method.
        //
        ILGenerator ilgen = exMethod.GetILGenerator();

        Type ienumOf = typeof(IEnumerable<>);
        Type TfromListOf = listOf.GetGenericArguments()[0];
        Type ienumOfT = ienumOf.MakeGenericType(TfromListOf);
        Type[] ctorArgs = {ienumOfT};

        ConstructorInfo ctorPrep = listOf.GetConstructor(ctorArgs);
        ConstructorInfo ctor = 
            TypeBuilder.GetConstructor(listOfTFirst, ctorPrep);

        ilgen.Emit(OpCodes.Ldarg_0);
        ilgen.Emit(OpCodes.Newobj, ctor);
        ilgen.Emit(OpCodes.Ret);

        // Create the type and save the assembly. 
        Type finished = myType.CreateType();
        myAssembly.Save(myAsmName.Name+".dll");

        // Invoke the method.
        // ExampleMethod is not generic, but the type it belongs to is
        // generic, so in order to get a MethodInfo that can be invoked
        // it is necessary to create a constructed type. The Example 
        // class satisfies the constraints on TFirst, because it is a 
        // reference type and has a default constructor. In order to
        // have a class that satisfies the constraints on TSecond, 
        // this code example defines the ExampleDerived type. These
        // two types are passed to MakeGenericMethod to create the
        // constructed type.
        //
        Type[] typeArgs = {typeof(Example), typeof(ExampleDerived)};
        Type constructed = finished.MakeGenericType(typeArgs);
        MethodInfo mi = constructed.GetMethod("ExampleMethod");

        // Create an array of Example objects, as input to the generic
        // method. This array must be passed as the only element of an 
        // array of arguments. The first argument of Invoke is 
        // null, because ExampleMethod is static. Display the count
        // on the resulting List<Example>.
        // 
        Example[] input = {new Example(), new Example()};
        object[] arguments = {input};

        List<Example> listX = 
            (List<Example>) mi.Invoke(null, arguments);

        Console.WriteLine(
            "\nThere are {0} elements in the List<Example>.", 
            listX.Count);

        DisplayGenericParameters(finished);
    }

    private static void DisplayGenericParameters(Type t)
    {
        if (!t.IsGenericType)
        {
            Console.WriteLine("Type '{0}' is not generic.");
            return;
        }
        if (!t.IsGenericTypeDefinition) 
        {
            t = t.GetGenericTypeDefinition();
        }

        Type[] typeParameters = t.GetGenericArguments();
        Console.WriteLine("\nListing {0} type parameters for type '{1}'.",
            typeParameters.Length, t);

        foreach( Type tParam in typeParameters )
        {
            Console.WriteLine("\r\nType parameter {0}:", tParam.ToString());

            foreach( Type c in tParam.GetGenericParameterConstraints() )
            {
                if (c.IsInterface)
                {
                    Console.WriteLine("    Interface constraint: {0}", c);
                }
                else
                {
                    Console.WriteLine("    Base type constraint: {0}", c);
                }
            }

            ListConstraintAttributes(tParam);
        }
    }

    // List the constraint flags. The GenericParameterAttributes
    // enumeration contains two sets of attributes, variance and
    // constraints. For this example, only constraints are used.
    //
    private static void ListConstraintAttributes(Type t)
    {
        // Mask off the constraint flags. 
        GenericParameterAttributes constraints = 
            t.GenericParameterAttributes & GenericParameterAttributes.SpecialConstraintMask;

        if ((constraints & GenericParameterAttributes.ReferenceTypeConstraint)
            != GenericParameterAttributes.None) 
        {
            Console.WriteLine("    ReferenceTypeConstraint");
        }

        if ((constraints & GenericParameterAttributes.NotNullableValueTypeConstraint)
            != GenericParameterAttributes.None) 
        {
            Console.WriteLine("    NotNullableValueTypeConstraint");
        }

        if ((constraints & GenericParameterAttributes.DefaultConstructorConstraint)
            !=GenericParameterAttributes.None) 
        {
            Console.WriteLine("    DefaultConstructorConstraint");
        }
    }
}

/* This code example produces the following output:

Type 'Sample' is generic: False
Type 'Sample' is generic: True

There are 2 elements in the List<Example>.

Listing 2 type parameters for type 'Sample[TFirst,TSecond]'.

Type parameter TFirst:
    ReferenceTypeConstraint
    DefaultConstructorConstraint

Type parameter TSecond:
    Interface constraint: IExampleA
    Interface constraint: IExampleB
    Base type constraint: ExampleBase
 */


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,