次の方法で共有


System.Reflection.Emit.MethodBuilder クラス

この記事では、この API のリファレンス ドキュメントに補足的な解説を提供します。

MethodBuilder クラスは、名前、属性、シグネチャ、メソッド本体など、共通の中間言語 (CIL) のメソッドを完全に記述するために使用されます。 実行時にクラスを作成するために、 TypeBuilder クラスと組み合わせて使用されます。

リフレクション出力を使用すると、グローバル メソッドを定義したり、メソッドを型メンバーとして定義することができます。 メソッドを定義する API は、 MethodBuilder オブジェクトを返します。

グローバル メソッド

グローバル メソッドは、MethodBuilder オブジェクトを返すModuleBuilder.DefineGlobalMethod メソッドを使用して定義されます。

グローバル メソッドは静的である必要があります。 動的モジュールにグローバル メソッドが含まれている場合、共通言語ランタイムは、すべてのグローバル関数が定義されるまで動的モジュールの修正を延期するため、動的モジュールまたは含まれている動的アセンブリを永続化する前に、 ModuleBuilder.CreateGlobalFunctions メソッドを呼び出す必要があります。

グローバル ネイティブ メソッドは、 ModuleBuilder.DefinePInvokeMethod メソッドを使用して定義されます。 プラットフォーム呼び出し (PInvoke) メソッドを抽象または仮想として宣言することはできません。 ランタイムは、プラットフォーム呼び出しメソッドの MethodAttributes.PinvokeImpl 属性を設定します。

型のメンバーとしてのメソッド

メソッドは、MethodBuilder オブジェクトを返すTypeBuilder.DefineMethod メソッドを使用して、型メンバーとして定義されます。

DefineParameter メソッドは、パラメーターの名前とパラメーター属性、または戻り値の属性を設定するために使用されます。 このメソッドによって返される ParameterBuilder オブジェクトは、パラメーターまたは戻り値を表します。 ParameterBuilder オブジェクトは、マーシャリングの設定、定数値の設定、およびカスタム属性の適用に使用できます。

属性

MethodAttributes列挙体のメンバーは、動的メソッドの正確な文字を定義します。

既知の問題