Comparteix a través de


TypeBuilder.DefineDefaultConstructor(MethodAttributes) Método

Definición

Define el constructor sin parámetros. El constructor que se define aquí simplemente llamará al constructor sin parámetros del elemento primario.

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

Parámetros

attributes
MethodAttributes

Un objeto MethodAttributes que representa los atributos que se aplicarán al constructor.

Devoluciones

Devuelve el constructor.

Atributos

Excepciones

El tipo de elemento primario (tipo base) no tiene un constructor sin parámetros.

El tipo se creó previamente mediante CreateType().

o bien

Para el tipo dinámico actual, la propiedad IsGenericType es true, pero la propiedad IsGenericTypeDefinition es false.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de para establecer la firma y los atributos concretos de DefineConstructor un constructor en un tipo dinámico y devolver un correspondiente ConstructorBuilder para el rellenado de MSIL.

// 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)

Comentarios

Dado que el constructor sin parámetros se define automáticamente, es necesario llamar a este método solo en las situaciones siguientes:

  • Ha definido otro constructor y también quiere un constructor sin parámetros que simplemente llame al constructor de clase base.

  • Quiere establecer los atributos en el constructor sin parámetros en algo distinto PrivateScopede , Public, HideBySig, SpecialName, y RTSpecialName.

Se aplica a