TypeBuilder.DefineDefaultConstructor(MethodAttributes) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan konstruktor tanpa parameter. Konstruktor yang ditentukan di sini hanya akan memanggil konstruktor tanpa parameter induk.
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
Objek MethodAttributes
yang mewakili atribut yang akan diterapkan ke konstruktor.
Mengembalikan
Mengembalikan konstruktor.
- Atribut
Pengecualian
Jenis induk (jenis dasar) tidak memiliki konstruktor tanpa parameter.
Jenis sebelumnya dibuat menggunakan CreateType().
-atau-
Untuk jenis dinamis saat ini, IsGenericType properti adalah true
, tetapi IsGenericTypeDefinition propertinya adalah false
.
Contoh
Sampel kode berikut menunjukkan penggunaan DefineConstructor
untuk mengatur tanda tangan dan atribut khusus konstruktor pada jenis dinamis dan mengembalikan yang sesuai ConstructorBuilder untuk populasi MSIL.
// 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)
Keterangan
Karena konstruktor tanpa parameter secara otomatis ditentukan, perlu untuk memanggil metode ini hanya dalam situasi berikut:
Anda telah menentukan konstruktor lain dan Anda juga menginginkan konstruktor tanpa parameter yang hanya memanggil konstruktor kelas dasar.
Anda ingin mengatur atribut pada konstruktor tanpa parameter ke sesuatu selain PrivateScope, , Public, HideBySig, SpecialNamedan RTSpecialName.