TypeBuilder.DefineDefaultConstructor(MethodAttributes) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce il costruttore senza parametri. Il costruttore definito qui chiamerà semplicemente il costruttore senza parametri dell'elemento padre.
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
Parametri
- attributes
- MethodAttributes
Oggetto MethodAttributes che rappresenta gli attributi da applicare al costruttore.
Valori restituiti
Restituisce il costruttore.
- Attributi
Eccezioni
Il tipo padre (tipo di base) non dispone di un costruttore senza parametri.
Il tipo è stato creato in precedenza usando CreateType().
oppure
Per il tipo dinamico corrente, la IsGenericType proprietà è true, ma la IsGenericTypeDefinition proprietà è false.
Esempio
L'esempio di codice seguente illustra l'uso di DefineConstructor per impostare la firma e gli attributi specifici di un costruttore su un tipo dinamico e restituire un corrispondente ConstructorBuilder per il popolamento MSIL.
// 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)
Commenti
Poiché il costruttore senza parametri viene definito automaticamente, è necessario chiamare questo metodo solo nelle situazioni seguenti:
È stato definito un altro costruttore e si vuole anche un costruttore senza parametri che chiama semplicemente il costruttore della classe base.
Si desidera impostare gli attributi nel costruttore senza parametri su un valore diverso da PrivateScope, Public, HideBySigSpecialName, e RTSpecialName.