TypeBuilder.DefineDefaultConstructor(MethodAttributes) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 auf den Konstruktor anzuwendenden Attribute darstellt.
Gibt zurück
Gibt den Konstruktor zurück.
- Attribute
Ausnahmen
Der übergeordnete Typ (Basistyp) weist keinen parameterlosen Konstruktor auf.
Der Typ wurde zuvor mit CreateType()erstellt.
- oder -
Für den aktuellen dynamischen Typ ist die IsGenericType-Eigenschaft true
, aber die IsGenericTypeDefinition-Eigenschaft ist false
.
Beispiele
Im folgenden Codebeispiel wird die Verwendung von DefineConstructor
veranschaulicht, um die signatur und attribute eines Konstruktors für einen dynamischen Typ festzulegen und eine entsprechende ConstructorBuilder MSIL-Auffüllung zurückzugeben.
// 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)
Hinweise
Da der parameterlose Konstruktor automatisch definiert wird, muss diese Methode nur in den folgenden Situationen aufgerufen werden:
Sie haben einen anderen Konstruktor definiert, und Sie möchten auch einen parameterlosen Konstruktor, der einfach den Basisklassenkonstruktor aufruft.
Sie möchten die Attribute für den parameterlosen Konstruktor auf etwas anderes als PrivateScope, , PublicHideBySig, SpecialNameund RTSpecialNamefestlegen.