TypeBuilder.DefineDefaultConstructor(MethodAttributes) Methode

Definition

Definiert den parameterlosen Konstruktor. Der hier definierte Konstruktor ruft einfach den parameterlosen Konstruktor des übergeordneten Elements auf.

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

Parameter

attributes
MethodAttributes

Ein MethodAttributes Objekt, das die Attribute darstellt, die auf den Konstruktor angewendet werden sollen.

Gibt zurück

Gibt den Konstruktor zurück.

Attribute

Ausnahmen

Der übergeordnete Typ (Basistyp) verfügt nicht über einen parameterlosen Konstruktor.

Der Typ wurde zuvor mit CreateType().

-oder-

Für den aktuellen dynamischen Typ ist die IsGenericType Eigenschaft , aber die IsGenericTypeDefinition Eigenschaft ist false.true

Beispiele

Im folgenden Codebeispiel wird die Verwendung der DefineConstructor speziellen Signatur und Attribute eines Konstruktors für einen dynamischen Typ veranschaulicht und eine entsprechende ConstructorBuilder MSIL-Population zurückgegeben.

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

Hinweise

Da der parameterlose Konstruktor automatisch definiert wird, ist es erforderlich, diese Methode nur in den folgenden Situationen aufzurufen:

  • Sie haben einen anderen Konstruktor definiert und möchten auch einen parameterlosen Konstruktor, der einfach den Basisklassenkonstruktor aufruft.

  • Sie möchten die Attribute für den parameterlosen Konstruktor auf einen anderen Wert als PrivateScope, , Public, , HideBySigSpecialNameund .RTSpecialName

Gilt für: