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
|
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.Reflection.MemberInfo
System.Type
System.Reflection.Emit.GenericTypeParameterBuilder
Assembly : mscorlib (dans mscorlib.dll)
Le type GenericTypeParameterBuilder expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
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.) |
|
AssemblyQualifiedName | Obtient null dans tous les cas. (Substitue Type.AssemblyQualifiedName.) |
|
Attributes | Obtient les attributs associés à Type. (Hérité de Type.) |
|
BaseType | Obtient la contrainte de type de base du paramètre de type générique actuel. (Substitue Type.BaseType.) |
|
ContainsGenericParameters | Obtient true dans tous les cas. (Substitue Type.ContainsGenericParameters.) |
|
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.) |
|
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.) |
|
FullName | Obtient null dans tous les cas. (Substitue Type.FullName.) |
|
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.) |
|
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.) |
|
GUID | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GUID.) |
|
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.) |
|
IsAbstract | Obtient une valeur indiquant si le Type est abstrait et doit être substitué. (Hérité de Type.) |
|
IsAnsiClass | Obtient une valeur indiquant si l'attribut de format de chaîne AnsiClass est sélectionné pour le Type. (Hérité de Type.) |
|
IsArray | Obtient une valeur indiquant si Type est un tableau. (Hérité de Type.) |
|
IsAutoClass | Obtient une valeur indiquant si l'attribut de format de chaîne AutoClass est sélectionné pour le Type. (Hérité de Type.) |
|
IsAutoLayout | Obtient une valeur indiquant si l'attribut de présentation de classe AutoLayout est sélectionné pour le Type. (Hérité de Type.) |
|
IsByRef | Obtient une valeur indiquant si Type est passé par référence. (Hérité de Type.) |
|
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.) |
|
IsCOMObject | Obtient une valeur indiquant si Type est un objet COM. (Hérité de Type.) |
|
IsContextful | Obtient une valeur indiquant si Type peut être hébergé dans un contexte. (Hérité de Type.) |
|
IsEnum | Obtient une valeur indiquant si le Type actuel représente une énumération. (Hérité de Type.) |
|
IsExplicitLayout | Obtient une valeur indiquant si l'attribut de présentation de classe ExplicitLayout est sélectionné pour le Type. (Hérité de Type.) |
|
IsGenericParameter | Obtient true dans tous les cas. (Substitue Type.IsGenericParameter.) |
|
IsGenericType | Retourne false dans tous les cas. (Substitue Type.IsGenericType.) |
|
IsGenericTypeDefinition | Obtient false dans tous les cas. (Substitue Type.IsGenericTypeDefinition.) |
|
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.) |
|
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.) |
|
IsLayoutSequential | Obtient une valeur indiquant si l'attribut de présentation de classe SequentialLayout est sélectionné pour le Type. (Hérité de Type.) |
|
IsMarshalByRef | Obtient une valeur indiquant si Type est marshalé par référence. (Hérité de Type.) |
|
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.) |
|
IsNestedAssembly | Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans son propre assembly. (Hérité de Type.) |
|
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.) |
|
IsNestedFamily | Obtient une valeur indiquant si le Type est imbriqué et visible uniquement dans sa propre famille. (Hérité de Type.) |
|
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.) |
|
IsNestedPrivate | Obtient une valeur indiquant si le Type est imbriqué et déclaré privé. (Hérité de Type.) |
|
IsNestedPublic | Obtient une valeur indiquant si une classe est imbriquée et déclarée publique. (Hérité de Type.) |
|
IsNotPublic | Obtient une valeur indiquant si Type n'est pas déclaré public. (Hérité de Type.) |
|
IsPointer | Obtient une valeur indiquant si Type est un pointeur. (Hérité de Type.) |
|
IsPrimitive | Obtient une valeur indiquant si le Type est l'un des types primitifs. (Hérité de Type.) |
|
IsPublic | Obtient une valeur indiquant si Type est déclaré public. (Hérité de Type.) |
|
IsSealed | Obtient une valeur indiquant si le Type est déclaré sealed. (Hérité de Type.) |
|
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.) |
|
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.) |
|
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.) |
|
IsSerializable | Obtient une valeur indiquant si le Type est sérialisable. (Hérité de Type.) |
|
IsSpecialName | Obtient une valeur indiquant si le Type a un nom qui nécessite un traitement spécial. (Hérité de Type.) |
|
IsUnicodeClass | Obtient une valeur indiquant si l'attribut de format de chaîne UnicodeClass est sélectionné pour le Type. (Hérité de Type.) |
|
IsValueType | Obtient une valeur indiquant si le Type est un type valeur. (Hérité de Type.) |
|
IsVisible | Obtient une valeur qui indique si Type est accessible par code à l'extérieur de l'assembly. (Hérité de Type.) |
|
MemberType | Obtient une valeur MemberTypes qui indique que ce membre est un type ou un type imbriqué. (Hérité de Type.) |
|
MetadataToken | Obtient une valeur qui identifie un élément de métadonnées. (Hérité de MemberInfo.) |
|
Module | Obtient le module dynamique qui contient le paramètre de type générique. (Substitue Type.Module.) |
|
Name | Obtient le nom du paramètre de type générique. (Substitue MemberInfo.Name.) |
|
Namespace | Obtient null dans tous les cas. (Substitue Type.Namespace.) |
|
ReflectedType | Obtient l'objet Type qui a été utilisé pour obtenir GenericTypeParameterBuilder. (Substitue Type.ReflectedType.) |
|
StructLayoutAttribute | Obtient un StructLayoutAttribute qui décrit la disposition du type actuel. (Hérité de Type.) |
|
TypeHandle | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.TypeHandle.) |
|
TypeInitializer | Obtient l'initialiseur de Type. (Hérité de Type.) |
|
UnderlyingSystemType | Obtient le paramètre de type générique actuel. (Substitue Type.UnderlyingSystemType.) |
| Nom | Description | |
|---|---|---|
|
Equals(Object) | Tests si l'objet donné est une instance de EventToken et est égal à l'instance actuelle. (Substitue Type.Equals(Object).) |
|
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.) |
|
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.) |
|
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.) |
|
FindMembers | Retourne un tableau filtré d'objets MemberInfo du type du membre spécifié. (Hérité de Type.) |
|
GetArrayRank | Obtient le nombre de dimensions dans un Array. (Hérité de Type.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
GetConstructors() | Retourne tous les constructeurs publics définis pour le Type en cours. (Hérité de Type.) |
|
GetConstructors(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetConstructors(BindingFlags).) |
|
GetCustomAttributes(Boolean) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.GetCustomAttributes(Boolean).) |
|
GetCustomAttributes(Type, Boolean) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.GetCustomAttributes(Type, Boolean).) |
|
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.) |
|
GetDefaultMembers | Recherche les membres définis pour le Type en cours dont le DefaultMemberAttribute est défini. (Hérité de Type.) |
|
GetElementType | Lève une exception NotSupportedException dans tous les cas. (Substitue Type.GetElementType().) |
|
GetEnumName | Retourne le nom de la constante qui a la valeur spécifiée, pour le type énumération actuel. (Hérité de Type.) |
|
GetEnumNames | Retourne les noms des membres du type énumération actuel. (Hérité de Type.) |
|
GetEnumUnderlyingType | Retourne le type sous-jacent du type énumération actuel. (Hérité de Type.) |
|
GetEnumValues | Retourne un tableau des valeurs des constantes dans le type énumération actuel. (Hérité de Type.) |
|
GetEvent(String) | Retourne l'objet EventInfo représentant l'événement public spécifié. (Hérité de Type.) |
|
GetEvent(String, BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvent(String, BindingFlags).) |
|
GetEvents() | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvents().) |
|
GetEvents(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetEvents(BindingFlags).) |
|
GetField(String) | Recherche le champ public portant le nom spécifié. (Hérité de Type.) |
|
GetField(String, BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetField(String, BindingFlags).) |
|
GetFields() | Retourne tous les champs publics du Type en cours. (Hérité de Type.) |
|
GetFields(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetFields(BindingFlags).) |
|
GetGenericArguments | Non valide pour les paramètres de type générique. (Substitue Type.GetGenericArguments().) |
|
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.) |
|
GetGenericTypeDefinition | Non valide pour les paramètres de type générique. (Substitue Type.GetGenericTypeDefinition().) |
|
GetHashCode | Retourne un code de hachage entier 32 bits pour l'instance actuelle. (Substitue Type.GetHashCode().) |
|
GetInterface(String) | Recherche l'interface avec le nom spécifié. (Hérité de Type.) |
|
GetInterface(String, Boolean) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterface(String, Boolean).) |
|
GetInterfaceMap | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterfaceMap(Type).) |
|
GetInterfaces | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetInterfaces().) |
|
GetMember(String) | Recherche les membres publics portant le nom spécifié. (Hérité de Type.) |
|
GetMember(String, BindingFlags) | Recherche les membres spécifiés, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.) |
|
GetMember(String, MemberTypes, BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMember(String, MemberTypes, BindingFlags).) |
|
GetMembers() | Retourne tous les membres publics du Type en cours. (Hérité de Type.) |
|
GetMembers(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMembers(BindingFlags).) |
|
GetMethod(String) | Recherche la méthode publique avec le nom spécifié. (Hérité de Type.) |
|
GetMethod(String, BindingFlags) | Recherche la méthode spécifiée, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
GetMethods() | Retourne toutes les méthodes publiques du Type en cours. (Hérité de Type.) |
|
GetMethods(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetMethods(BindingFlags).) |
|
GetNestedType(String) | Recherche le type imbriqué public avec le nom spécifié. (Hérité de Type.) |
|
GetNestedType(String, BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetNestedType(String, BindingFlags).) |
|
GetNestedTypes() | Retourne les types publics imbriqués dans le Type actuel. (Hérité de Type.) |
|
GetNestedTypes(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetNestedTypes(BindingFlags).) |
|
GetProperties() | Retourne toutes les propriétés publiques du Type en cours. (Hérité de Type.) |
|
GetProperties(BindingFlags) | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.GetProperties(BindingFlags).) |
|
GetProperty(String) | Recherche la propriété publique avec le nom spécifié. (Hérité de Type.) |
|
GetProperty(String, BindingFlags) | Recherche la propriété spécifiée, à l'aide des contraintes de liaison spécifiées. (Hérité de Type.) |
|
GetProperty(String, Type) | Recherche la propriété publique à l'aide du nom et du type de retour spécifiés. (Hérité de Type.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
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.) |
|
GetType() | Obtient le Type en cours. (Hérité de Type.) |
|
GetTypeCodeImpl | Retourne le code du type sous-jacent du Type spécifié. (Hérité de Type.) |
|
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.) |
|
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.) |
|
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.) |
|
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[]).) |
|
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.) |
|
IsAssignableFrom | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.IsAssignableFrom(Type).) |
|
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.) |
|
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.) |
|
IsContextfulImpl | Implémente la propriété IsContextful et détermine si Type peut être hébergé dans un contexte. (Hérité de Type.) |
|
IsDefined | Non pris en charge pour les paramètres de type générique incomplets. (Substitue MemberInfo.IsDefined(Type, Boolean).) |
|
IsEnumDefined | Retourne une valeur qui indique si la valeur spécifiée existe dans le type énumération actuel. (Hérité de Type.) |
|
IsEquivalentTo | Détermine si deux types COM ont la même identité et prennent en charge l'équivalence de type. (Hérité de Type.) |
|
IsInstanceOfType | Détermine si l'objet spécifié est une instance du Type en cours. (Hérité de Type.) |
|
IsMarshalByRefImpl | Implémente la propriété IsMarshalByRef et détermine si le Type est marshalé par référence. (Hérité de Type.) |
|
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.) |
|
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.) |
|
IsSubclassOf | Non pris en charge pour les paramètres de type générique incomplets. (Substitue Type.IsSubclassOf(Type).) |
|
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.) |
|
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().) |
|
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).) |
|
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().) |
|
MakeGenericType | Non valide pour les paramètres de type générique incomplets. (Substitue Type.MakeGenericType(Type[]).) |
|
MakePointerType | Retourne un objet Type représentant un pointeur vers le paramètre de type générique actuel. (Substitue Type.MakePointerType().) |
|
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
SetBaseTypeConstraint | Définit le type de base dont un type doit hériter afin d'être substitué au paramètre de type. |
|
SetCustomAttribute(CustomAttributeBuilder) | Définit un attribut personnalisé à l'aide d'un générateur d'attributs personnalisés. |
|
SetCustomAttribute(ConstructorInfo, Byte[]) | Définit un attribut personnalisé à l'aide d'un blob d'attribut personnalisé spécifié. |
|
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. |
|
SetInterfaceConstraints | Définit les interfaces qu'un type doit implémenter pour être substitué au paramètre de type. |
|
ToString | Renvoie une représentation sous forme de chaîne du paramètre de type générique actuel. (Substitue Type.ToString().) |
| Nom | Description | |
|---|---|---|
|
_MemberInfo.GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de MemberInfo.) |
|
_MemberInfo.GetType | Obtient un objet Type représentant la classe MemberInfo. (Hérité de MemberInfo.) |
|
_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.) |
|
_MemberInfo.GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de MemberInfo.) |
|
_MemberInfo.Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de MemberInfo.) |
|
_Type.GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Type.) |
|
_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.) |
|
_Type.GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Type.) |
|
_Type.Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Type.) |
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 */
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.