リフレクション出力によるコンストラクタの定義
更新 : 2007 年 11 月
コンストラクタは、TypeBuilder.DefineConstructor メソッドを使用して定義されます。DefineConstructor は ConstructorBuilder を返します。DefineConstructor では、呼び出し元で MethodAttributes 列挙型を使用してコンストラクタ属性を指定する必要があります。
クラスの既定のコンストラクタは TypeBuilder.DefineDefaultConstructor メソッドを使用して定義されます。DefineDefaultConstructor は ConstructorBuilder を返します。既定のコンストラクタは、親クラスのコンストラクタを呼び出します。呼び出し元でクラスの既定のコンストラクタを定義しない場合は、共通言語ランタイムが自動的にこのコンストラクタを定義します。
属性
ランタイムは、コンストラクタの MethodAttributes.SpecialName 属性を設定します。
プライベート コンストラクタを指定するには、MethodAttributes.Private 属性を使用します。その他の可視属性については、MethodAttributes 列挙型の説明を参照してください。
既知の問題
ConstructorBuilder は ConstructorInfo の派生クラスですが、ConstructorInfo クラスで定義されている抽象メソッドの一部は ConstructorBuilder では完全には実装されていません。これらの ConstructorBuilder メソッドは NotSupportedException をスローします。目的の機能を取得するには、コンストラクタが格納されている型を取得して、この型に対してリフレクションを実行します。たとえば、ConstructorBuilder.Invoke メソッドは完全には実装されません。
現時点ではカスタム修飾子はサポートされていません。