TypeBuilder.DefineDefaultConstructor(MethodAttributes) メソッド

定義

パラメーターなしのコンストラクターを定義します。Defines the parameterless constructor. ここで定義されたコンストラクターは、単に親のパラメーターなしのコンストラクターを呼び出します。The constructor defined here will simply call the parameterless constructor of the parent.

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
Public Function DefineDefaultConstructor (attributes As MethodAttributes) As ConstructorBuilder

パラメーター

attributes
MethodAttributes

コンストラクターに適用される属性を表す MethodAttributes オブジェクト。A MethodAttributes object representing the attributes to be applied to the constructor.

戻り値

コンストラクターを返します。Returns the constructor.

属性

例外

親の型 (基本型) には、パラメーターなしのコンストラクターがありません。The parent type (base type) does not have a parameterless constructor.

型は CreateType() を使用して既に作成されました。The type was previously created using CreateType().

- または --or- 現在の動的な型では、IsGenericType プロパティは true ですが、IsGenericTypeDefinition プロパティは false です。For the current dynamic type, the IsGenericType property is true, but the IsGenericTypeDefinition property is false.

次のコードサンプルでは、DefineConstructor を使用して、動的な型にコンストラクターの特定のシグネチャと属性を設定し、MSIL の作成に対応する ConstructorBuilder を返す方法を示します。The following code sample demonstrates the use of DefineConstructor to set a constructor's particular signature and attributes on a dynamic type and return a corresponding ConstructorBuilder for MSIL population.

// 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)

注釈

パラメーターなしのコンストラクターが自動的に定義されるため、このメソッドは、次の状況でのみ呼び出す必要があります。Because the parameterless constructor is automatically defined, it is necessary to call this method only in the following situations:

  • 別のコンストラクターが定義されていて、基本クラスのコンストラクターを呼び出すだけのパラメーターなしのコンストラクターも必要です。You have defined another constructor and you also want a parameterless constructor that simply calls the base class constructor.

  • パラメーターなしのコンストラクターの属性を、PrivateScopePublicHideBySigSpecialName、および @no__t に設定する必要があります。You want to set the attributes on the parameterless constructor to something other than PrivateScope, Public, HideBySig, SpecialName, and RTSpecialName.

適用対象