Freigeben über


TypeBuilder.DefineConstructor Methode

Definition

Fügt dem dynamischen Typ einen neuen Konstruktor hinzu.

Überlädt

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen und der Signatur hinzu.

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

Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen, der angegebenen Signatur und den angegebenen benutzerdefinierten Modifizierern hinzu.

DefineConstructor(MethodAttributes, CallingConventions, Type[])

Quelle:
TypeBuilder.cs
Quelle:
TypeBuilder.cs
Quelle:
TypeBuilder.cs

Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen und der Signatur hinzu.

public:
 System::Reflection::Emit::ConstructorBuilder ^ DefineConstructor(System::Reflection::MethodAttributes attributes, System::Reflection::CallingConventions callingConvention, cli::array <Type ^> ^ parameterTypes);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[]? parameterTypes);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, 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
[<System.Runtime.InteropServices.ComVisible(true)>]
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

Parameter

attributes
MethodAttributes

Die Attribute des Konstruktors.

callingConvention
CallingConventions

Die Aufrufkonvention des Konstruktors.

parameterTypes
Type[]

Die Parametertypen des Konstruktors.

Gibt zurück

Der definierte Konstruktor.

Attribute

Ausnahmen

Der Typ wurde zuvor mit CreateType()erstellt.

Beispiele

Das folgende Codebeispiel veranschaulicht die Verwendung von DefineConstructor , um die bestimmte Signatur und Attribute eines Konstruktors für einen dynamischen Typ festzulegen und eine entsprechende ConstructorBuilder MSIL-Population 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

Wenn Sie keinen Konstruktor für Ihren dynamischen Typ definieren, wird automatisch ein parameterloser Konstruktor bereitgestellt, der den parameterlosen Konstruktor der Basisklasse aufruft.

Wenn Sie einen Konstruktor für Ihren dynamischen Typ definieren, wird kein parameterloser Konstruktor bereitgestellt. Sie haben die folgenden Optionen zum Bereitstellen eines parameterlosen Konstruktors zusätzlich zu dem von Ihnen definierten Konstruktor:

  • Wenn Sie einen parameterlosen Konstruktor benötigen, der einfach den parameterlosen Konstruktor der Basisklasse aufruft, können Sie die DefineDefaultConstructor -Methode verwenden, um einen zu erstellen (und optional den Zugriff darauf einzuschränken). Stellen Sie keine Implementierung für diesen parameterlosen Konstruktor bereit. Wenn Sie dies tun, wird eine Ausnahme ausgelöst, wenn Sie versuchen, den Konstruktor zu verwenden. Beim Aufruf der CreateType Methode wird keine Ausnahme ausgelöst.

  • Wenn Sie einen parameterlosen Konstruktor benötigen, der mehr als nur den parameterlosen Konstruktor der Basisklasse aufruft oder einen anderen Konstruktor der Basisklasse aufruft, oder der etwas ganz anderes tut, müssen Sie die TypeBuilder.DefineConstructor -Methode verwenden, um einen zu erstellen und Eine eigene Implementierung bereitzustellen.

Gilt für:

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

Quelle:
TypeBuilder.cs
Quelle:
TypeBuilder.cs
Quelle:
TypeBuilder.cs

Fügt dem Typ einen neuen Konstruktor mit den angegebenen Attributen, der angegebenen Signatur und den angegebenen benutzerdefinierten Modifizierern hinzu.

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);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[]? parameterTypes, Type[][]? requiredCustomModifiers, Type[][]? optionalCustomModifiers);
public System.Reflection.Emit.ConstructorBuilder DefineConstructor (System.Reflection.MethodAttributes attributes, System.Reflection.CallingConventions callingConvention, Type[] parameterTypes, Type[][] requiredCustomModifiers, 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
[<System.Runtime.InteropServices.ComVisible(true)>]
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

Parameter

attributes
MethodAttributes

Die Attribute des Konstruktors.

callingConvention
CallingConventions

Die Aufrufkonvention des Konstruktors.

parameterTypes
Type[]

Die Parametertypen des Konstruktors.

requiredCustomModifiers
Type[][]

Ein Array mit Arrays von Typen. Jedes Array von Typen stellt die erforderlichen benutzerdefinierten Modifizierer für den entsprechenden Parameter dar, z. B. IsConst. Wenn ein bestimmter Parameter keine erforderlichen benutzerdefinierten Modifizierer hat, geben Sie null anstelle eines Arrays von Typen an. Wenn keiner der Parameter erforderliche benutzerdefinierte Modifizierer hat, geben Sie null anstelle eines Arrays mit Arrays an.

optionalCustomModifiers
Type[][]

Ein Array mit Arrays von Typen. Jedes Array von Typen stellt die optionalen benutzerdefinierten Modifizierer für den entsprechenden Parameter dar, z. B. IsConst. Wenn ein bestimmter Parameter keine optionalen benutzerdefinierten Modifizierer hat, geben Sie null anstelle eines Arrays von Typen an. Wenn keiner der Parameter optionale benutzerdefinierte Modifizierer hat, geben Sie null anstelle eines Arrays mit Arrays an.

Gibt zurück

Der definierte Konstruktor.

Attribute

Ausnahmen

Die Größe von requiredCustomModifiers oder optionalCustomModifiers entspricht nicht die Größe von parameterTypes.

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.

Hinweise

Diese Überladung wird für Designer verwalteter Compiler bereitgestellt.

Hinweis

Weitere Informationen zu benutzerdefinierten Modifizierern finden Sie unter ECMA C# und Common Language Infrastructure Standards und Standard ECMA-335 – Common Language Infrastructure (CLI).

Gilt für: