Share via


リフレクション出力によるコンストラクターの定義

コンストラクターは、TypeBuilder.DefineConstructor メソッドを使用して定義されます。 DefineConstructorConstructorBuilder を返します。 DefineConstructor では、呼び出し元で MethodAttributes 列挙型を使用してコンストラクター属性を指定する必要があります。

クラスの既定のコンストラクターは TypeBuilder.DefineDefaultConstructor メソッドを使用して定義されます。 DefineDefaultConstructorConstructorBuilder を返します。 既定のコンストラクターは、親クラスのコンストラクターを呼び出します。 呼び出し元でクラスの既定のコンストラクターを定義しない場合は、共通言語ランタイムが自動的にこのコンストラクターを定義します。

属性

  • ランタイムは、コンストラクターの MethodAttributes.SpecialName 属性を設定します。

  • プライベート コンストラクターを指定するには、MethodAttributes.Private 属性を使用します。 その他の可視属性については、MethodAttributes 列挙型の説明を参照してください。

既知の問題

  • ConstructorBuilderConstructorInfo の派生クラスですが、ConstructorInfo クラスで定義されている抽象メソッドの一部は ConstructorBuilder では完全には実装されていません。 これらの ConstructorBuilder メソッドは NotSupportedException をスローします。 目的の機能を取得するには、コンストラクターが格納されている型を取得して、この型に対してリフレクションを実行します。 たとえば、ConstructorBuilder.Invoke メソッドは完全には実装されません。

  • 現時点ではカスタム修飾子はサポートされていません。

参照

その他の技術情報

リフレクション出力の使用