次の方法で共有


TypeBuilder.DefineDefaultConstructor メソッド

既定のコンストラクタを定義します。ここで定義されたコンストラクタは、親の既定のコンストラクタを呼び出すだけです。

Public Function DefineDefaultConstructor( _
   ByVal attributes As MethodAttributes _) As ConstructorBuilder
[C#]
public ConstructorBuilder DefineDefaultConstructor(MethodAttributesattributes);
[C++]
public: ConstructorBuilder* DefineDefaultConstructor(MethodAttributesattributes);
[JScript]
public function DefineDefaultConstructor(
   attributes : MethodAttributes) : ConstructorBuilder;

パラメータ

  • attributes
    コンストラクタに適用する属性を表す MethodAttributes オブジェクト。

戻り値

コンストラクタを返します。

例外

例外の種類 条件
NotSupportedException 親クラスに既定のコンストラクタがありません。

解説

既定のコンストラクタは自動的に定義されるため、既定のコンストラクタの属性を MethodBase.Constructor 以外に設定する必要がある場合にだけ、このメソッドを呼び出す必要があります。このメソッドは、属性を設定しやすくするために用意されています。

使用例

[Visual Basic, C#, C++] 次のコード例は、 DefineConstructor を使用して、コンストラクタの固有のシグネチャと属性を動的な型に対して設定し、それに対応する MSIL に書き込みを行うための ConstructorBuilder を返す方法を示しています。

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

[C#] 
// 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);

[C++] 
// 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);

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

TypeBuilder クラス | TypeBuilder メンバ | System.Reflection.Emit 名前空間