TypeBuilder.DefineConstructor Méthode

Définition

Ajoute un nouveau constructeur au type dynamique.

Surcharges

Nom Description
DefineConstructor(MethodAttributes, CallingConventions, Type[])

Ajoute un nouveau constructeur au type, avec les attributs et la signature donnés.

DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])

Ajoute un nouveau constructeur au type, avec les attributs, la signature et les modificateurs personnalisés donnés.

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Ajoute un nouveau constructeur au type, avec les attributs et la signature donnés.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <Type ^> ^ parameterTypes);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes);
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] -> System.Reflection.Emit.ConstructorBuilder
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] -> System.Reflection.Emit.ConstructorBuilder
Public Function DefineConstructor (attributes As MethodAttributes, callingConvention As CallingConventions, parameterTypes As Type()) As ConstructorBuilder

Paramètres

attributes
MethodAttributes

Attributs du constructeur.

callingConvention
CallingConventions

Convention d’appel du constructeur.

parameterTypes
Type[]

Types de paramètres du constructeur.

Retours

Constructeur défini.

Attributs

Exceptions

Le type a été créé précédemment à l’aide CreateType()de .

Exemples

L’exemple de code suivant illustre l’utilisation de la définition de DefineConstructor la signature et des attributs particuliers d’un constructeur sur un type dynamique et retourne un correspondant ConstructorBuilder à la population MSIL.

// Define the constructor.
Type[] constructorArgs = { typeof(String) };
ConstructorBuilder myConstructorBuilder =
   helloWorldTypeBuilder.DefineConstructor(MethodAttributes.Public,
                      CallingConventions.Standard, constructorArgs);
// Generate IL for the method. The constructor stores its argument in the private field.
ILGenerator myConstructorIL = myConstructorBuilder.GetILGenerator();
myConstructorIL.Emit(OpCodes.Ldarg_0);
myConstructorIL.Emit(OpCodes.Ldarg_1);
myConstructorIL.Emit(OpCodes.Stfld, myGreetingField);
myConstructorIL.Emit(OpCodes.Ret);
' Define the constructor.
Dim constructorArgs As Type() = {GetType(String)}
Dim myConstructorBuilder As ConstructorBuilder = helloWorldTypeBuilder.DefineConstructor _
                     (MethodAttributes.Public, CallingConventions.Standard, constructorArgs)
' Generate IL for the method. The constructor stores its argument in the private field.
Dim myConstructorIL As ILGenerator = myConstructorBuilder.GetILGenerator()
myConstructorIL.Emit(OpCodes.Ldarg_0)
myConstructorIL.Emit(OpCodes.Ldarg_1)
myConstructorIL.Emit(OpCodes.Stfld, myGreetingField)
myConstructorIL.Emit(OpCodes.Ret)

Remarques

Si vous ne définissez pas de constructeur pour votre type dynamique, un constructeur sans paramètre est fourni automatiquement et appelle le constructeur sans paramètre de la classe de base.

Si vous définissez un constructeur pour votre type dynamique, un constructeur sans paramètre n’est pas fourni. Vous disposez des options suivantes pour fournir un constructeur sans paramètre en plus du constructeur que vous avez défini :

  • Si vous souhaitez un constructeur sans paramètre qui appelle simplement le constructeur sans paramètre de la classe de base, vous pouvez utiliser la DefineDefaultConstructor méthode pour en créer un (et éventuellement restreindre l’accès à celui-ci). Ne fournissez pas d’implémentation pour ce constructeur sans paramètre. Si vous le faites, une exception est levée lorsque vous essayez d’utiliser le constructeur. Aucune exception n’est levée lorsque la CreateType méthode est appelée.

  • Si vous souhaitez un constructeur sans paramètre qui effectue quelque chose de plus que d’appeler simplement le constructeur sans paramètre de la classe de base, ou qui appelle un autre constructeur de la classe de base, ou qui fait quelque chose d’autre entièrement, vous devez utiliser la TypeBuilder.DefineConstructor méthode pour en créer un et fournir votre propre implémentation.

S’applique à

DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])

Ajoute un nouveau constructeur au type, avec les attributs, la signature et les modificateurs personnalisés donnés.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <Type ^> ^ parameterTypes, cli::array <cli::array <Type ^> ^> ^ requiredCustomModifiers, cli::array <cli::array <Type ^> ^> ^ optionalCustomModifiers);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor(System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, Type[][] optionalCustomModifiers);
[<System.Runtime.InteropServices.ComVisible(true)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
Public Function DefineConstructor (attributes As MethodAttributes, callingConvention As CallingConventions, parameterTypes As Type(), requiredCustomModifiers As Type()(), optionalCustomModifiers As Type()()) As ConstructorBuilder

Paramètres

attributes
MethodAttributes

Attributs du constructeur.

callingConvention
CallingConventions

Convention d’appel du constructeur.

parameterTypes
Type[]

Types de paramètres du constructeur.

requiredCustomModifiers
Type[][]

Tableau de tableaux de types. Chaque tableau de types représente les modificateurs personnalisés requis pour le paramètre correspondant, par IsConstexemple . Si un paramètre particulier n’a pas de modificateurs personnalisés requis, spécifiez null au lieu d’un tableau de types. Si aucun des paramètres n’a besoin de modificateurs personnalisés, spécifiez null plutôt qu’un tableau de tableaux.

optionalCustomModifiers
Type[][]

Tableau de tableaux de types. Chaque tableau de types représente les modificateurs personnalisés facultatifs pour le paramètre correspondant, par IsConstexemple . Si un paramètre particulier n’a aucun modificateur personnalisé facultatif, spécifiez null au lieu d’un tableau de types. Si aucun des paramètres n’a de modificateurs personnalisés facultatifs, spécifiez null au lieu d’un tableau de tableaux.

Retours

Constructeur défini.

Attributs

Exceptions

La taille ou n’est requiredCustomModifiersoptionalCustomModifiers pas égale à la taille de parameterTypes.

Le type a été créé précédemment à l’aide CreateType()de .

-ou-

Pour le type dynamique actuel, la IsGenericType propriété est true, mais la IsGenericTypeDefinition propriété est false.

Remarques

Cette surcharge est fournie pour les concepteurs de compilateurs managés.

Note

Pour plus d’informations sur les modificateurs personnalisés, voir ECMA C# et Common Language Infrastructure Standards et Standard ECMA-335 - Common Language Infrastructure (CLI).

S’applique à