TypeBuilder.DefineConstructor Méthode

Définition

Ajoute un nouveau constructeur au type dynamique.Adds a new constructor to the dynamic type.

Surcharges

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Ajoute un nouveau constructeur au type avec les attributs donnés et la signature.Adds a new constructor to the type, with the given attributes and signature.

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

Ajoute un nouveau constructeur au type, avec les attributs, la signature et les modificateurs personnalisés donnés.Adds a new constructor to the type, with the given attributes, signature, and custom modifiers.

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Ajoute un nouveau constructeur au type avec les attributs donnés et la signature.Adds a new constructor to the type, with the given attributes and signature.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <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
Public Function DefineConstructor (attributes As MethodAttributes, callingConvention As CallingConventions, parameterTypes As Type()) As ConstructorBuilder

Paramètres

attributes
MethodAttributes

Attributs du constructeur.The attributes of the constructor.

callingConvention
CallingConventions

Convention d’appel du constructeur.The calling convention of the constructor.

parameterTypes
Type[]

Types de paramètre du constructeur.The parameter types of the constructor.

Retours

Constructeur défini.The defined constructor.

Attributs

Exceptions

Le type a déjà été créé en utilisant CreateType().The type was previously created using CreateType().

Exemples

L’exemple de code suivant illustre l’utilisation de DefineConstructor pour définir la signature et les attributs particuliers d’un constructeur sur un type dynamique et retourner un ConstructorBuilder correspondant pour le remplissage MSIL.The following code sample demonstrates the use of DefineConstructor to set a constructor's particular signature and attributes on a dynamic type and return a corresponding ConstructorBuilder for MSIL population.

// Define the constructor.
array<Type^>^ constructorArgs = {String::typeid};
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.
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 il appelle le constructeur sans paramètre de la classe de base.If you do not define a constructor for your dynamic type, a parameterless constructor is provided automatically, and it calls the parameterless constructor of the base class.

Si vous définissez un constructeur pour votre type dynamique, aucun constructeur sans paramètre n’est fourni.If you define a constructor for your dynamic type, a parameterless constructor is not provided. Vous disposez des options suivantes pour fournir un constructeur sans paramètre en plus du constructeur que vous avez défini :You have the following options for providing a parameterless constructor in addition to the constructor you defined:

  • 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 méthode DefineDefaultConstructor pour en créer un (et éventuellement en restreindre l’accès).If you want a parameterless constructor that simply calls the parameterless constructor of the base class, you can use the DefineDefaultConstructor method to create one (and optionally restrict access to it). Ne fournissez pas d’implémentation pour ce constructeur sans paramètre.Do not provide an implementation for this parameterless constructor. Dans ce cas, une exception est levée lorsque vous essayez d’utiliser le constructeur.If you do, an exception is thrown when you try to use the constructor. Aucune exception n’est levée lorsque la méthode CreateType est appelée.No exception is thrown when the CreateType method is called.

  • Si vous souhaitez un constructeur sans paramètre qui fait plus que simplement appeler le constructeur sans paramètre de la classe de base, ou qui appelle un autre constructeur de la classe de base, ou qui effectue complètement une autre opération, vous devez utiliser la méthode TypeBuilder.DefineConstructor pour en créer une, et fournir votre propre implémentation.If you want a parameterless constructor that does something more than simply calling the parameterless constructor of the base class, or that calls another constructor of the base class, or that does something else entirely, you must use the TypeBuilder.DefineConstructor method to create one, and provide your own implementation.

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

Ajoute un nouveau constructeur au type, avec les attributs, la signature et les modificateurs personnalisés donnés.Adds a new constructor to the type, with the given attributes, signature, and custom modifiers.

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);
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.The attributes of the constructor.

callingConvention
CallingConventions

Convention d’appel du constructeur.The calling convention of the constructor.

parameterTypes
Type[]

Types de paramètre du constructeur.The parameter types of the constructor.

requiredCustomModifiers
Type[][]

Tableau de tableaux de types.An array of arrays of types. Chaque tableau de types représente les modificateurs personnalisés obligatoires pour le paramètre correspondant, comme IsConst.Each array of types represents the required custom modifiers for the corresponding parameter, such as IsConst. Si un paramètre particulier ne possède pas de modificateurs personnalisés obligatoires, spécifiez null plutôt qu’un tableau de types.If a particular parameter has no required custom modifiers, specify null instead of an array of types. Si aucun paramètre ne possède de modificateur personnalisé requis, spécifiez null plutôt qu’un tableau de tableaux.If none of the parameters have required custom modifiers, specify null instead of an array of arrays.

optionalCustomModifiers
Type[][]

Tableau de tableaux de types.An array of arrays of types. Chaque tableau de types représente les modificateurs personnalisés facultatifs pour le paramètre correspondant, comme IsConst.Each array of types represents the optional custom modifiers for the corresponding parameter, such as IsConst. Si un paramètre particulier ne possède pas de modificateurs personnalisés facultatifs, spécifiez null plutôt qu’un tableau de types.If a particular parameter has no optional custom modifiers, specify null instead of an array of types. Si aucun paramètre ne possède de modificateur personnalisé facultatif, spécifiez null plutôt qu’un tableau de tableaux.If none of the parameters have optional custom modifiers, specify null instead of an array of arrays.

Retours

Constructeur défini.The defined constructor.

Attributs

Exceptions

La taille de requiredCustomModifiers ou optionalCustomModifiers n’est pas égale à la taille de parameterTypes.The size of requiredCustomModifiers or optionalCustomModifiers does not equal the size of parameterTypes.

Le type a déjà été créé en utilisant CreateType().The type was previously created using CreateType().

- ou --or- Pour le type dynamique actuel, la propriété IsGenericType a la valeur true, mais la propriété IsGenericTypeDefinition a la valeur false.For the current dynamic type, the IsGenericType property is true, but the IsGenericTypeDefinition property is false.

Remarques

Cette surcharge est fournie pour les concepteurs de compilateurs managés.This overload is provided for designers of managed compilers.

Notes

Pour plus d’informations sur les modificateurs personnalisés, consultez la documentation sur les métadonnées ECMA Partition II.For more information on custom modifiers, see the ECMA Partition II Metadata documentation. La documentation est disponible en ligne. Consultez ECMA C# and Common Language Infrastructure Standards sur MSDN et Standard ECMA-335 - Common Language Infrastructure (CLI) sur le site web d’Ecma International.The documentation is available online; see ECMA C# and Common Language Infrastructure Standards on MSDN and Standard ECMA-335 - Common Language Infrastructure (CLI) on the Ecma International Web site.

S’applique à