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

更新 : 2007 年 11 月

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

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

属性

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

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

既知の問題

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

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

参照

その他の技術情報

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