TypeBuilder.DefineDefaultConstructor(MethodAttributes) Méthode

Définition

Définit le constructeur sans paramètre.Defines the parameterless constructor. Le constructeur défini ici appelle simplement le constructeur sans paramètre du parent.The constructor defined here will simply call the parameterless constructor of the parent.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineDefaultConstructor(System::Reflection::MethodAttributes attributes);
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor (System.Reflection.MethodAttributes attributes);
member this.DefineDefaultConstructor : System.Reflection.MethodAttributes -> System.Reflection.Emit.ConstructorBuilder
Public Function DefineDefaultConstructor (attributes As MethodAttributes) As ConstructorBuilder

Paramètres

attributes
MethodAttributes

Objet MethodAttributes représentant les attributs à appliquer au constructeur.A MethodAttributes object representing the attributes to be applied to the constructor.

Retours

Retourne le constructeur.Returns the constructor.

Attributs

Exceptions

Le type parent (type de base) n’a pas de constructeur sans paramètre.The parent type (base type) does not have a parameterless constructor.

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.

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

Étant donné que le constructeur sans paramètre est défini automatiquement, il est nécessaire d’appeler cette méthode uniquement dans les cas suivants :Because the parameterless constructor is automatically defined, it is necessary to call this method only in the following situations:

  • Vous avez défini un autre constructeur et vous souhaitez également un constructeur sans paramètre qui appelle simplement le constructeur de classe de base.You have defined another constructor and you also want a parameterless constructor that simply calls the base class constructor.

  • Vous souhaitez définir les attributs du constructeur sans paramètre sur une valeur autre que PrivateScope, Public, HideBySig, SpecialNameet RTSpecialName.You want to set the attributes on the parameterless constructor to something other than PrivateScope, Public, HideBySig, SpecialName, and RTSpecialName.

S’applique à