TypeBuilder.DefineConstructor Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee voegt u een nieuwe constructor toe aan het dynamische type.
Overloads
| Name | Description |
|---|---|
| DefineConstructor(MethodAttributes, CallingConventions, Type[]) |
Hiermee voegt u een nieuwe constructor toe aan het type, met de opgegeven kenmerken en handtekening. |
| DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][]) |
Voegt een nieuwe constructor toe aan het type, met de opgegeven kenmerken, handtekeningen en aangepaste modifiers. |
DefineConstructor(MethodAttributes, CallingConventions, Type[])
Hiermee voegt u een nieuwe constructor toe aan het type, met de opgegeven kenmerken en handtekening.
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);
[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
Parameters
- attributes
- MethodAttributes
De kenmerken van de constructor.
- callingConvention
- CallingConventions
De aanroepconventie van de constructor.
- parameterTypes
- Type[]
De parametertypen van de constructor.
Retouren
De gedefinieerde constructor.
- Kenmerken
Uitzonderingen
Het type is eerder gemaakt met behulp van CreateType().
Voorbeelden
In het volgende codevoorbeeld wordt het gebruik gedemonstreerd van het instellen van DefineConstructor de specifieke handtekening en kenmerken van een constructor voor een dynamisch type en het retourneren van een corresponderende ConstructorBuilder MSIL-populatie.
// 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)
Opmerkingen
Als u geen constructor definieert voor uw dynamische type, wordt er automatisch een parameterloze constructor opgegeven en wordt de parameterloze constructor van de basisklasse aanroepen.
Als u een constructor definieert voor uw dynamische type, wordt er geen parameterloze constructor opgegeven. U hebt de volgende opties voor het opgeven van een parameterloze constructor naast de constructor die u hebt gedefinieerd:
Als u een parameterloze constructor wilt die simpelweg de parameterloze constructor van de basisklasse aanroept, kunt u de DefineDefaultConstructor methode gebruiken om er een te maken (en eventueel de toegang tot de klasse te beperken). Geef geen implementatie op voor deze parameterloze constructor. Als u dit doet, wordt er een uitzondering gegenereerd wanneer u de constructor probeert te gebruiken. Er wordt geen uitzondering gegenereerd wanneer de CreateType methode wordt aangeroepen.
Als u een parameterloze constructor wilt die meer doet dan alleen de parameterloze constructor van de basisklasse aanroepen, of die een andere constructor van de basisklasse aanroept, of die iets anders doet, moet u de TypeBuilder.DefineConstructor methode gebruiken om er een te maken en uw eigen implementatie op te geven.
Van toepassing op
DefineConstructor(MethodAttributes, CallingConventions, Type[], Type[][], Type[][])
Voegt een nieuwe constructor toe aan het type, met de opgegeven kenmerken, handtekeningen en aangepaste modifiers.
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);
[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);
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)>]
member this.DefineConstructor : System.Reflection.MethodAttributes * System.Reflection.CallingConventions * Type[] * Type[][] * Type[][] -> System.Reflection.Emit.ConstructorBuilder
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
Parameters
- attributes
- MethodAttributes
De kenmerken van de constructor.
- callingConvention
- CallingConventions
De aanroepconventie van de constructor.
- parameterTypes
- Type[]
De parametertypen van de constructor.
- requiredCustomModifiers
- Type[][]
Een matrix van matrices van typen. Elke matrix van typen vertegenwoordigt de vereiste aangepaste aanpassingen voor de bijbehorende parameter, zoals IsConst. Als een bepaalde parameter geen vereiste aangepaste aanpassingen heeft, geeft u null deze op in plaats van een matrix met typen. Als geen van de parameters aangepaste aanpassingsaanpassingen vereist heeft, geeft u null dit op in plaats van een matrix met matrices.
- optionalCustomModifiers
- Type[][]
Een matrix van matrices van typen. Elke matrix van typen vertegenwoordigt de optionele aangepaste aanpassingen voor de bijbehorende parameter, zoals IsConst. Als een bepaalde parameter geen optionele aangepaste modifiers heeft, geeft u null in plaats van een matrix van typen op. Als geen van de parameters optionele aangepaste aanpassingen heeft, geeft u null deze op in plaats van een matrix met matrices.
Retouren
De gedefinieerde constructor.
- Kenmerken
Uitzonderingen
De grootte van requiredCustomModifiers of optionalCustomModifiers is niet gelijk aan de grootte van parameterTypes.
Het type is eerder gemaakt met behulp van CreateType().
– of –
Voor het huidige dynamische type is de IsGenericType eigenschap , maar de IsGenericTypeDefinition eigenschap is false.true
Opmerkingen
Deze overbelasting wordt geboden voor ontwerpers van beheerde compilers.
Note
Zie ECMA C# en Common Language Infrastructure Standards andStandard ECMA-335 - Common Language Infrastructure (CLI) voor meer informatie over aangepaste modifiers.