英語で読む

次の方法で共有


TypeBuilder.DefineDefaultConstructor(MethodAttributes) メソッド

定義

パラメーターなしのコンストラクターを定義します。 ここで定義されたコンストラクターは、単に親のパラメーターなしのコンストラクターを呼び出します。

C#
public System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes);
C#
[System.Runtime.InteropServices.ComVisible(true)]
public System.Reflection.Emit.ConstructorBuilder DefineDefaultConstructor(System.Reflection.MethodAttributes attributes);

パラメーター

attributes
MethodAttributes

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

戻り値

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

属性

例外

親の型 (基本型) には、パラメーターなしのコンストラクターがありません。

型は CreateType() を使用して既に作成されました。

- または -

現在の動的な型では、IsGenericType プロパティは true ですが、IsGenericTypeDefinition プロパティは false です。

次のコード サンプルでは、 を使用 DefineConstructor して、コンストラクターの特定のシグネチャと属性を動的型に設定し、MSIL 作成に対応する ConstructorBuilder を返す方法を示します。

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

注釈

パラメーターなしのコンストラクターは自動的に定義されるため、次の状況でのみこのメソッドを呼び出す必要があります。

  • 別のコンストラクターを定義しており、単に基底クラスコンストラクターを呼び出すパラメーターなしのコンストラクターも必要です。

  • パラメーターなしのコンストラクターの属性を、SpecialNamePublicHideBySigおよび RTSpecialName以外PrivateScopeの属性に設定する必要があります。

適用対象

製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided), 2.1