MethodBuilderとは? わかりやすく解説

MethodBuilder クラス

動的クラスのメソッド (またはコンストラクタ) を定義および表現します。

名前空間: System.Reflection.Emit
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ClassInterfaceAttribute(ClassInterfaceType.None)> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class
 MethodBuilder
    Inherits MethodInfo
    Implements _MethodBuilder
Dim instance As MethodBuilder
[ClassInterfaceAttribute(ClassInterfaceType.None)] 
[ComVisibleAttribute(true)] 
public sealed class MethodBuilder : MethodInfo,
 _MethodBuilder
[ClassInterfaceAttribute(ClassInterfaceType::None)] 
[ComVisibleAttribute(true)] 
public ref class MethodBuilder sealed : public
 MethodInfo, _MethodBuilder
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class MethodBuilder extends MethodInfo
 implements _MethodBuilder
ClassInterfaceAttribute(ClassInterfaceType.None) 
ComVisibleAttribute(true) 
public final class MethodBuilder extends
 MethodInfo implements _MethodBuilder
解説解説
使用例使用例

MethodBuilder クラスを使用して、動的な型の中にメソッドを作成する方法を次の例に示します。

Imports System
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit

 _


Class DemoMethodBuilder
   
   Public Shared Sub AddMethodDynamically(ByRef
 myTypeBld As TypeBuilder, _
                        mthdName As String,
 _
                            mthdParams() As Type, _
                            returnType As Type, _
                            mthdAction As String)
      
      Dim myMthdBld As MethodBuilder = myTypeBld.DefineMethod(mthdName,
 _
                       MethodAttributes.Public Or MethodAttributes.Static,
 _
                       returnType, _
                       mthdParams)
      
      Dim ILout As ILGenerator = myMthdBld.GetILGenerator()
      
      Dim numParams As Integer
 = mthdParams.Length
      
      Dim x As Byte
      For x = 0 To numParams - 1
         ILout.Emit(OpCodes.Ldarg_S, x)
      Next x
      
      If numParams > 1 Then
         Dim y As Integer
         For y = 0 To (numParams - 1) - 1
            Select Case mthdAction
               Case "A"
                  ILout.Emit(OpCodes.Add)
               Case "M"
                  ILout.Emit(OpCodes.Mul)
               Case Else
                  ILout.Emit(OpCodes.Add)
            End Select
         Next y
      End If
      ILout.Emit(OpCodes.Ret)
   End Sub 'AddMethodDynamically
    
   
   Public Shared Sub Main()
      
      Dim myDomain As AppDomain = Thread.GetDomain()
      Dim asmName As New
 AssemblyName()
      asmName.Name = "DynamicAssembly1"
      
      Dim myAsmBuilder As AssemblyBuilder =
 myDomain.DefineDynamicAssembly(asmName, _
                        AssemblyBuilderAccess.RunAndSave)
      
      Dim myModule As ModuleBuilder = myAsmBuilder.DefineDynamicModule("DynamicModule1",
 _
                                       "MyDynamicAsm.dll")
      
      Dim myTypeBld As TypeBuilder = myModule.DefineType("MyDynamicType",
 TypeAttributes.Public)
      
      ' Get info from the user to build the method dynamically.
      Console.WriteLine("Let's build a simple method dynamically!")
      Console.WriteLine("Please enter a few numbers, separated
 by spaces.")
      Dim inputNums As String
 = Console.ReadLine()
      Console.Write("Do you want to [A]dd or [M]ultiply these
 numbers? ")
      Dim myMthdAction As String
 = Console.ReadLine()
      Console.Write("Lastly, what do you want to name your new
 dynamic method? ")
      Dim myMthdName As String
 = Console.ReadLine()
      
      ' Process inputNums into an array and create a corresponding Type
 array 
      Dim index As Integer
 = 0
      Dim inputNumsList As String()
 = inputNums.Split()
      
      Dim myMthdParams(inputNumsList.Length - 1) As
 Type
      Dim inputValsList(inputNumsList.Length - 1) As
 Object
      
      
      Dim inputNum As String
      For Each inputNum In
  inputNumsList
         inputValsList(index) = CType(Convert.ToInt32(inputNum), Object)
         myMthdParams(index) = GetType(Integer)
         index += 1
      Next inputNum
      
      ' Now, call the method building method with the parameters, passing
 the 
      ' TypeBuilder by reference.
      AddMethodDynamically(myTypeBld, myMthdName, myMthdParams, GetType(Integer),
 myMthdAction)
      
      Dim myType As Type = myTypeBld.CreateType()
     
      Dim description as String
 
      If myMthdAction = "A" Then
     description = "adding"
      Else
     description = "multiplying"
      End If

      Console.WriteLine("---")
      Console.WriteLine("The result of {0} the inputted values
 is: {1}", _
             description, _
                 myType.InvokeMember(myMthdName, _
                         BindingFlags.InvokeMethod Or _
                                 BindingFlags.Public Or _
                         BindingFlags.Static, _
                         Nothing, _
                         Nothing, _
                         inputValsList)) 
      Console.WriteLine("---")

      ' If you are interested in seeing the MSIL generated dynamically
 for the method
      ' your program generated, change to the directory where you ran
 the compiled
      ' code sample and type "ildasm MyDynamicAsm.dll" at
 the prompt. When the list
      ' of manifest contents appears, click on "MyDynamicType"
 and then on the name of
      ' of the method you provided during execution.
 
      myAsmBuilder.Save("MyDynamicAsm.dll") 

      Dim myMthdInfo As MethodInfo = myType.GetMethod(myMthdName)
      Console.WriteLine("Your Dynamic Method: {0};",
 myMthdInfo.ToString())
   End Sub 'Main 
End Class 'DemoMethodBuilder

using System;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;


class DemoMethodBuilder {

    public static void AddMethodDynamically
 (ref TypeBuilder myTypeBld,
                         string mthdName,
                         Type[] mthdParams, 
                         Type returnType,
                         string mthdAction) 
        {
    
       MethodBuilder myMthdBld = myTypeBld.DefineMethod(
                         mthdName,
                         MethodAttributes.Public |
                         MethodAttributes.Static,
                         returnType,
                         mthdParams);    

       ILGenerator ILout = myMthdBld.GetILGenerator();
        
       int numParams = mthdParams.Length;

       for (byte x=0; x<numParams; x++) {
         ILout.Emit(OpCodes.Ldarg_S, x);
        }

           if (numParams > 1) {
               for (int y=0; y<(numParams-1);
 y++) {
          switch (mthdAction) {
            case "A": ILout.Emit(OpCodes.Add);
                  break;
            case "M": ILout.Emit(OpCodes.Mul);
                  break;
            default: ILout.Emit(OpCodes.Add);
                 break;
          }
        }
       }
       ILout.Emit(OpCodes.Ret);

         

    }

    public static void Main()
        {

       AppDomain myDomain = Thread.GetDomain();
       AssemblyName asmName = new AssemblyName();
       asmName.Name = "DynamicAssembly1";
    
       AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
                      asmName, 
                      AssemblyBuilderAccess.RunAndSave);

          ModuleBuilder myModule = myAsmBuilder.DefineDynamicModule("DynamicModule1"
,
                                        "MyDynamicAsm.dll");

       TypeBuilder myTypeBld = myModule.DefineType("MyDynamicType",
                                 TypeAttributes.Public);       

       // Get info from the user to build the method dynamically.

       Console.WriteLine("Let's build a simple method dynamically!");
       Console.WriteLine("Please enter a few numbers, separated by spaces.");
       string inputNums = Console.ReadLine();
       Console.Write("Do you want to [A]dd or [M]ultiply these numbers? ");
       string myMthdAction = Console.ReadLine();
       Console.Write("Lastly, what do you want to name your new
 dynamic method? ");
       string myMthdName = Console.ReadLine();
    
       // Process inputNums into an array and create a corresponding
 Type array 

       int index = 0;
       string[] inputNumsList = inputNums.Split();

           Type[] myMthdParams = new Type[inputNumsList.Length];
       object[] inputValsList = new object[inputNumsList.Length];
       
       
       foreach (string inputNum in
 inputNumsList) {
         inputValsList[index] = (object)Convert.ToInt32(inputNum);
        myMthdParams[index] = typeof(int);
        index++;
           } 

       // Now, call the method building method with the parameters,
 passing the 
       // TypeBuilder by reference.

       AddMethodDynamically(ref myTypeBld,
                myMthdName,
                myMthdParams,
                typeof(int),    
                myMthdAction);

       Type myType = myTypeBld.CreateType();

       Console.WriteLine("---");
       Console.WriteLine("The result of {0} the inputted values is: {1}"
,
                 ((myMthdAction == "A") ? "adding" : "multiplying")
,
                 myType.InvokeMember(myMthdName,
                 BindingFlags.InvokeMethod | BindingFlags.Public |
                 BindingFlags.Static,
                 null,
                 null,
                 inputValsList));
       Console.WriteLine("---");

       // Let's take a look at the method we created.

       // If you are interested in seeing the MSIL generated dynamically
 for the method
           // your program generated, change to the directory where
 you ran the compiled
           // code sample and type "ildasm MyDynamicAsm.dll"
 at the prompt. When the list
           // of manifest contents appears, click on "MyDynamicType"
 and then on the name of
           // of the method you provided during execution.

       myAsmBuilder.Save("MyDynamicAsm.dll");

       MethodInfo myMthdInfo = myType.GetMethod(myMthdName);
           Console.WriteLine("Your Dynamic Method: {0};", myMthdInfo.ToString());
 
    
    }

}

using namespace System;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
void AddMethodDynamically( TypeBuilder^ myTypeBld, String^ mthdName,
 array<Type^>^mthdParams, Type^ returnType, String^ mthdAction )
{
   MethodBuilder^ myMthdBld = myTypeBld->DefineMethod( mthdName, static_cast<MethodAttributes>(MethodAttributes::Public
 | MethodAttributes::Static), returnType, mthdParams );
   ILGenerator^ ILOut = myMthdBld->GetILGenerator();
   int numParams = mthdParams->Length;
   for ( Byte x = 0; x < numParams; x++ )
   {
      ILOut->Emit( OpCodes::Ldarg_S, x );

   }
   if ( numParams > 1 )
   {
      for ( int y = 0; y < (numParams -
 1); y++ )
      {
         if ( mthdAction->Equals( "A" ) )
                  ILOut->Emit( OpCodes::Add );
         else
         if ( mthdAction->Equals( "M" ) )
                  ILOut->Emit( OpCodes::Mul );
         else
                  ILOut->Emit( OpCodes::Mul );

      }
   }

   ILOut->Emit( OpCodes::Ret );
}

int main()
{
   AppDomain^ myDomain = Thread::GetDomain();
   AssemblyName^ asmName = gcnew AssemblyName;
   asmName->Name = "DynamicAssembly1";
   AssemblyBuilder^ myAsmBuilder = myDomain->DefineDynamicAssembly( asmName, AssemblyBuilderAccess::RunAndSave
 );
   ModuleBuilder^ myModule = myAsmBuilder->DefineDynamicModule( "DynamicModule1",
 "MyDynamicAsm.dll" );
   TypeBuilder^ myTypeBld = myModule->DefineType( "MyDynamicType", TypeAttributes::Public
 );
   
   // Get info from the user to build the method dynamically.
   Console::WriteLine( "Let's build a simple method dynamically!" );
   Console::WriteLine( "Please enter a few numbers, separated by spaces."
 );
   String^ inputNums = Console::ReadLine();
   Console::Write( "Do you want to [A]dd or [M]ultiply these numbers? "
 );
   String^ myMthdAction = Console::ReadLine();
   Console::Write( "Lastly, what do you want to name your new
 dynamic method? " );
   String^ myMthdName = Console::ReadLine();
   
   // Process inputNums into an array and create a corresponding Type
 array
   int index = 0;
   array<String^>^inputNumsList = inputNums->Split( 0 );
   array<Type^>^myMthdParams = gcnew array<Type^>(inputNumsList->Length);
   array<Object^>^inputValsList = gcnew array<Object^>(inputNumsList->Length);
   System::Collections::IEnumerator^ myEnum = inputNumsList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ inputNum = safe_cast<String^>(myEnum->Current);
      inputValsList[ index ] = Convert::ToInt32( inputNum );
      myMthdParams[ index ] = int::typeid;
      index++;
   }

   
   // Now, call the method building method with the parameters, passing
 the
   // TypeBuilder by reference.
   AddMethodDynamically( myTypeBld, myMthdName, myMthdParams, int::typeid,
 myMthdAction );
   Type^ myType = myTypeBld->CreateType();
   Console::WriteLine( "---" );
   Console::WriteLine( "The result of {0} the inputted values is: {1}",
 ((myMthdAction->Equals( "A" )) ? (String^)"adding" : "multiplying"),
 myType->InvokeMember( myMthdName, static_cast<BindingFlags>(BindingFlags::InvokeMethod | BindingFlags::Public | BindingFlags::Static), nullptr, nullptr,
 inputValsList ) );
   Console::WriteLine( "---" );
   
   // Let's take a look at the method we created.
   // If you are interested in seeing the MSIL generated dynamically
 for the method
   // your program generated, change to the directory where you ran
 the compiled
   // code sample and type "ildasm MyDynamicAsm.dll" at the
 prompt. When the list
   // of manifest contents appears, click on "MyDynamicType"
 and then on the name of
   // of the method you provided during execution.
   myAsmBuilder->Save( "MyDynamicAsm.dll" );
   MethodInfo^ myMthdInfo = myType->GetMethod( myMthdName );
   Console::WriteLine( "Your Dynamic Method: {0};", myMthdInfo );
}

import System.*;
import System.Threading.*;
import System.Reflection.*;
import System.Reflection.Emit.*;

class DemoMethodBuilder
{
    public static void AddMethodDynamically(TypeBuilder
 myTypeBld,
        String mthdName, Type mthdParams[], Type returnType, String mthdAction)
    {
        MethodBuilder myMthdBld = myTypeBld.DefineMethod(mthdName,
            MethodAttributes.Public | MethodAttributes.Static,
            returnType, mthdParams);
        ILGenerator iLout = myMthdBld.GetILGenerator();
        int numParams = mthdParams.length;
        for (ubyte x = 0; x < numParams; x++) {
            iLout.Emit(OpCodes.Ldarg_S, x);
        }
        if (numParams > 1) {
            for (int y = 0; y < numParams
 - 1; y++) {
                if (mthdAction.Equals("A") == true)
 {
                    iLout.Emit(OpCodes.Add);
                }
                else if (mthdAction.Equals("M")
 == true) {
                    iLout.Emit(OpCodes.Mul);
                }
                else {
                    iLout.Emit(OpCodes.Add);
                }
            }
        }
        iLout.Emit(OpCodes.Ret);
    } //AddMethodDynamically
 
    public static void main(String[]
 args)
    {
        AppDomain myDomain = System.Threading.Thread.GetDomain();
        AssemblyName asmName = new AssemblyName();
        asmName.set_Name("DynamicAssembly1");
        AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(asmName,
            AssemblyBuilderAccess.RunAndSave);
        ModuleBuilder myModule = myAsmBuilder.DefineDynamicModule
            ("DynamicModule1", "MyDynamicAsm.dll");
        TypeBuilder myTypeBld = myModule.DefineType("MyDynamicType",
            TypeAttributes.Public);

        // Get info from the user to build the method dynamically.
        Console.WriteLine("Let's build a simple method dynamically!");
        Console.WriteLine("Please enter a few numbers, separated by spaces.");
        String inputNums = Console.ReadLine();
        Console.Write("Do you want to [A]dd or [M]ultiply these numbers? ");
        String myMthdAction = Console.ReadLine();
        Console.Write("Lastly, what do you want to name your new
 "
            + "dynamic method? ");
        String myMthdName = Console.ReadLine();

        // Process inputNums into an array and create a corresponding
        // Type array 
        int index = 0;
        String inputNumsList[] = inputNums.Split(null);
        Type myMthdParams[] = new Type[inputNumsList.length];
        Object inputValsList[] = new Object[inputNumsList.length];
        for (int iCtr = 0; iCtr < inputNumsList.length;
 iCtr++) {
            String inputNum = inputNumsList[iCtr];
            inputValsList[index] = (Object)(Int32)Integer.parseInt(inputNum);
            myMthdParams.set_Item(index, int.class.ToType());
            index++;
        }

        // Now, call the method building method with the parameters
,
        // passing the TypeBuilder by reference.
        AddMethodDynamically(myTypeBld, myMthdName, myMthdParams,
            int.class.ToType(), myMthdAction);
        Type myType = myTypeBld.CreateType();
        Console.WriteLine("---");
        Console.WriteLine("The result of {0} the inputted values is: {1}"
,
            (myMthdAction.equals("A")) ? "adding" : "multiplying"
,
            myType.InvokeMember(myMthdName, 
            BindingFlags.InvokeMethod | BindingFlags.Public |
            BindingFlags.Static, null, null,
 inputValsList));
        Console.WriteLine("---");

        // Let's take a look at the method we created.
        // If you are interested in seeing the MSIL generated dynamically
 for
        // the method your program generated, change to the directory
 where 
        // you ran the compiled code sample and type "ildasm MyDynamicAsm.dll"
        //  at the prompt. When the list of manifest contents appears,
 click on
        // "MyDynamicType" and then on the name of the method
 you provided 
        // during execution.
        myAsmBuilder.Save("MyDynamicAsm.dll");
        MethodInfo myMthdInfo = myType.GetMethod(myMthdName);
        Console.WriteLine("Your Dynamic Method: {0};", myMthdInfo.ToString());
    } //main 
} //DemoMethodBuilder
継承階層継承階層
System.Object
   System.Reflection.MemberInfo
     System.Reflection.MethodBase
       System.Reflection.MethodInfo
        System.Reflection.Emit.MethodBuilder
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
MethodBuilder メンバ
System.Reflection.Emit 名前空間

MethodBuilder プロパティ


パブリック プロパティパブリック プロパティ

  名前 説明
パブリック プロパティ Attributes オーバーライドされます。 このメソッドの属性を取得します。
パブリック プロパティ CallingConvention オーバーライドされます。 メソッドの呼び出し規約を返します。
パブリック プロパティ ContainsGenericParameters オーバーライドされます。 この型ではサポートされていません。
パブリック プロパティ DeclaringType オーバーライドされます。 このメソッドを宣言する型を返します。
パブリック プロパティ InitLocals このメソッドのローカル変数を 0 で初期化するかどうかを指定するブール値を取得または設定します。このプロパティの既定値は true です。
パブリック プロパティ IsAbstract  メソッドが抽象メソッドかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsAssembly  同じアセンブリの異なるクラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsConstructor  メソッドがコンストラクタかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsFamily  このメソッドへのアクセスがクラスのメンバと派生クラスのメンバに制限されているかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsFamilyAndAssembly  同じアセンブリの派生クラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsFamilyOrAssembly  すべての派生クラスおよび同じアセンブリのすべてのクラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsFinal  このメソッドが final かどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsGenericMethod オーバーライドされます。 メソッドがジェネリック メソッドかどうかを示す値を取得します。
パブリック プロパティ IsGenericMethodDefinition オーバーライドされます。 現在の MethodBuilder オブジェクトがジェネリック メソッドの定義を表しているかどうかを示す値を取得します。
パブリック プロパティ IsHideBySig  派生クラスで、正確に同じシグネチャを持つ同じ種類のメンバだけが隠しメンバになるかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsPrivate  このメンバがプライベートかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsPublic  パブリック メソッドかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsSpecialName  特別な名前のメソッドかどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsStatic  メソッドが static かどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ IsVirtual  メソッドが virtual かどうかを示す値を取得します。 ( MethodBase から継承されます。)
パブリック プロパティ MemberType  このメンバがメソッドであることを示す MemberTypes 値を取得します。 ( MethodInfo から継承されます。)
パブリック プロパティ MetadataToken  メタデータ要素を識別する値を取得します。 ( MemberInfo から継承されます。)
パブリック プロパティ MethodHandle オーバーライドされます。 メソッドの内部ハンドルを取得します。基になるメタデータ ハンドルにアクセスするには、このハンドルを使用します。
パブリック プロパティ Module オーバーライドされます。 現在のメソッドを定義するモジュールを取得します。
パブリック プロパティ Name オーバーライドされます。 このメソッドの名前を取得します。
パブリック プロパティ ReflectedType オーバーライドされます。 このオブジェクトを取得するためにリフレクションで使用したクラスを取得します。
パブリック プロパティ ReturnParameter オーバーライドされます。 戻り値の型にカスタム修飾子があるかどうかなど、メソッドの戻り値の型に関する情報を格納している ParameterInfo オブジェクトを取得します。
パブリック プロパティ ReturnType  このメソッドの戻り値の型を取得します。 ( MethodInfo から継承されます。)
パブリック プロパティ ReturnTypeCustomAttributes オーバーライドされます。 メソッドの戻り値の型のカスタム属性を返します。
パブリック プロパティ Signature メソッドのシグネチャを取得します。
参照参照

関連項目

MethodBuilder クラス
System.Reflection.Emit 名前空間

MethodBuilder メソッド


パブリック メソッドパブリック メソッド

  名前 説明
パブリック メソッド AddDeclarativeSecurity このメソッドに宣言セキュリティを追加します。
パブリック メソッド CreateMethodBody 指定した MSIL (Microsoft Intermediate Language) 命令のバイト配列を使用して、メソッドの本体を作成します。
パブリック メソッド DefineGenericParameters 現在のメソッドのジェネリック型パラメータの数を設定し、その名前を指定し、制約の定義に使用できる GenericTypeParameterBuilder オブジェクトの配列を返します。
パブリック メソッド DefineParameter このメソッドのパラメータを定義します。
パブリック メソッド Equals オーバーロードされます。 オーバーライドされます。 2 つのオブジェクトが等しいかどうかを判断します。
パブリック メソッド GetBaseDefinition オーバーライドされます。 メソッドの基本実装を返します。
パブリック メソッド GetCurrentMethod  現在実行中のメソッドを表す MethodBase オブジェクトを返します。 ( MethodBase から継承されます。)
パブリック メソッド GetCustomAttributes オーバーロードされます。 オーバーライドされます。 このメソッドに対して定義されているカスタム属性を返します。
パブリック メソッド GetGenericArguments オーバーライドされます。 メソッドがジェネリック メソッドの場合に、メソッドの型パラメータを表す GenericTypeParameterBuilder オブジェクトの配列を返します。
パブリック メソッド GetGenericMethodDefinition オーバーライドされます。 このメソッドを返します。
パブリック メソッド GetHashCode オーバーライドされます。 このメソッドのハッシュ コードを取得します。
パブリック メソッド GetILGenerator オーバーロードされます。 このメソッドの ILGenerator を返します。
パブリック メソッド GetMethodBody  派生クラスでオーバーライドされると、現在のメソッドの MSIL ストリーム、ローカル変数、および例外にアクセスできるようにする MethodBody オブジェクトを取得します。 ( MethodBase から継承されます。)
パブリック メソッド GetMethodFromHandle  オーバーロードされます。 指定したハンドルを使用してメソッドの情報を取得します。 ( MethodBase から継承されます。)
パブリック メソッド GetMethodImplementationFlags オーバーライドされます。 メソッドの実装フラグを返します。
パブリック メソッド GetModule このメソッドが含まれているモジュールへの参照を返します。
パブリック メソッド GetParameters オーバーライドされます。 このメソッドのパラメータを返します。
パブリック メソッド GetToken このメソッドのトークンを表す MethodToken を返します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド Invoke オーバーロードされます。 メソッドを呼び出します。
パブリック メソッド IsDefined オーバーライドされます。 指定されたカスタム属性の型が定義されているかどうかを確認します。
パブリック メソッド MakeGenericMethod オーバーライドされます。 指定したジェネリック型引数を使用して、現在のジェネリック メソッドの定義から構築されたジェネリック メソッドを返します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド SetCustomAttribute オーバーロードされます。 カスタム属性を設定します。
パブリック メソッド SetImplementationFlags このメソッドの実装フラグを設定します。
パブリック メソッド SetMarshal このメソッドの戻り値の型のマーシャリング情報を設定します。
パブリック メソッド SetParameters メソッドのパラメータの数と型を設定します。
パブリック メソッド SetReturnType メソッドの戻り値の型を設定します。
パブリック メソッド SetSignature 戻り値の型、パラメータの型、戻り値の型とパラメータの型の必須およびオプションのカスタム修飾子を含むメソッド シグネチャを設定します。
パブリック メソッド SetSymCustomAttribute BLOB を使用して、シンボリック カスタム属性を設定します。
パブリック メソッド ToString オーバーライドされます。 この MethodBuilder インスタンスを文字列として返します。
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetIDsOfNames 一連の名前を対応する一連のディスパッチ識別子に割り当てます。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetTypeInfo オブジェクトの型情報を取得します。その後は、インターフェイスの型情報の取得に使用できます。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetTypeInfoCount オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.Invoke オブジェクトが公開するプロパティおよびメソッドにアクセスできるようにします。
参照参照

関連項目

MethodBuilder クラス
System.Reflection.Emit 名前空間

MethodBuilder メンバ

動的クラスのメソッド (またはコンストラクタ) を定義および表現します。

MethodBuilder データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
  名前 説明
パブリック プロパティ Attributes オーバーライドされます。 このメソッドの属性を取得します。
パブリック プロパティ CallingConvention オーバーライドされます。 メソッドの呼び出し規約を返します。
パブリック プロパティ ContainsGenericParameters オーバーライドされます。 この型ではサポートされていません。
パブリック プロパティ DeclaringType オーバーライドされます。 このメソッドを宣言する型を返します。
パブリック プロパティ InitLocals このメソッドのローカル変数を 0 で初期化するかどうかを指定するブール値を取得または設定します。このプロパティの既定値は true です。
パブリック プロパティ IsAbstract  メソッドが抽象メソッドかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsAssembly  同じアセンブリの異なるクラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsConstructor  メソッドがコンストラクタかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsFamily  このメソッドへのアクセスがクラスのメンバと派生クラスのメンバに制限されているかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsFamilyAndAssembly  同じアセンブリの派生クラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsFamilyOrAssembly  すべての派生クラスおよび同じアセンブリのすべてのクラスからこのメソッドを呼び出すことができるかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsFinal  このメソッドが final かどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsGenericMethod オーバーライドされます。 メソッドがジェネリック メソッドかどうかを示す値を取得します。
パブリック プロパティ IsGenericMethodDefinition オーバーライドされます。 現在の MethodBuilder オブジェクトがジェネリック メソッドの定義を表しているかどうかを示す値を取得します。
パブリック プロパティ IsHideBySig  派生クラスで、正確に同じシグネチャを持つ同じ種類のメンバだけが隠しメンバになるかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsPrivate  このメンバがプライベートかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsPublic  パブリック メソッドかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsSpecialName  特別な名前のメソッドかどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsStatic  メソッドが static かどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ IsVirtual  メソッドが virtual かどうかを示す値を取得します。(MethodBase から継承されます。)
パブリック プロパティ MemberType  このメンバがメソッドであることを示す MemberTypes 値を取得します。(MethodInfo から継承されます。)
パブリック プロパティ MetadataToken  メタデータ要素を識別する値を取得します。(MemberInfo から継承されます。)
パブリック プロパティ MethodHandle オーバーライドされます。 メソッドの内部ハンドルを取得します。基になるメタデータ ハンドルにアクセスするには、このハンドルを使用します。
パブリック プロパティ Module オーバーライドされます。 現在のメソッドを定義するモジュールを取得します。
パブリック プロパティ Name オーバーライドされます。 このメソッドの名前を取得します。
パブリック プロパティ ReflectedType オーバーライドされます。 このオブジェクトを取得するためにリフレクションで使用したクラスを取得します。
パブリック プロパティ ReturnParameter オーバーライドされます。 戻り値の型にカスタム修飾子があるかどうかなど、メソッドの戻り値の型に関する情報を格納している ParameterInfo オブジェクトを取得します。
パブリック プロパティ ReturnType  このメソッドの戻り値の型を取得します。(MethodInfo から継承されます。)
パブリック プロパティ ReturnTypeCustomAttributes オーバーライドされます。 メソッドの戻り値の型のカスタム属性を返します。
パブリック プロパティ Signature メソッドのシグネチャを取得します。
パブリック メソッドパブリック メソッド
  名前 説明
パブリック メソッド AddDeclarativeSecurity このメソッドに宣言セキュリティを追加します。
パブリック メソッド CreateMethodBody 指定した MSIL (Microsoft Intermediate Language) 命令のバイト配列を使用して、メソッドの本体を作成します。
パブリック メソッド DefineGenericParameters 現在のメソッドのジェネリック型パラメータの数を設定し、その名前を指定し、制約の定義に使用できる GenericTypeParameterBuilder オブジェクトの配列を返します。
パブリック メソッド DefineParameter このメソッドのパラメータを定義します。
パブリック メソッド Equals オーバーロードされます。 オーバーライドされます。 2 つのオブジェクトが等しいかどうかを判断します。
パブリック メソッド GetBaseDefinition オーバーライドされます。 メソッドの基本実装を返します。
パブリック メソッド GetCurrentMethod  現在実行中のメソッドを表す MethodBase オブジェクトを返します。 (MethodBase から継承されます。)
パブリック メソッド GetCustomAttributes オーバーロードされます。 オーバーライドされます。 このメソッドに対して定義されているカスタム属性を返します。
パブリック メソッド GetGenericArguments オーバーライドされます。 メソッドがジェネリック メソッドの場合に、メソッドの型パラメータを表す GenericTypeParameterBuilder オブジェクトの配列を返します。
パブリック メソッド GetGenericMethodDefinition オーバーライドされます。 このメソッドを返します。
パブリック メソッド GetHashCode オーバーライドされます。 このメソッドのハッシュ コードを取得します。
パブリック メソッド GetILGenerator オーバーロードされます。 このメソッドの ILGenerator を返します。
パブリック メソッド GetMethodBody  派生クラスでオーバーライドされると、現在のメソッドの MSIL ストリーム、ローカル変数、および例外にアクセスできるようにする MethodBody オブジェクトを取得します。 (MethodBase から継承されます。)
パブリック メソッド GetMethodFromHandle  オーバーロードされます。 指定したハンドルを使用してメソッドの情報を取得します。 (MethodBase から継承されます。)
パブリック メソッド GetMethodImplementationFlags オーバーライドされます。 メソッドの実装フラグを返します。
パブリック メソッド GetModule このメソッドが含まれているモジュールへの参照を返します。
パブリック メソッド GetParameters オーバーライドされます。 このメソッドのパラメータを返します。
パブリック メソッド GetToken このメソッドのトークンを表す MethodToken を返します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド Invoke オーバーロードされます。 メソッドを呼び出します。
パブリック メソッド IsDefined オーバーライドされます。 指定されたカスタム属性の型が定義されているかどうかを確認します。
パブリック メソッド MakeGenericMethod オーバーライドされます。 指定したジェネリック型引数を使用して、現在のジェネリック メソッドの定義から構築されたジェネリック メソッドを返します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド SetCustomAttribute オーバーロードされます。 カスタム属性を設定します。
パブリック メソッド SetImplementationFlags このメソッドの実装フラグを設定します。
パブリック メソッド SetMarshal このメソッドの戻り値の型のマーシャリング情報を設定します。
パブリック メソッド SetParameters メソッドのパラメータの数と型を設定します。
パブリック メソッド SetReturnType メソッドの戻り値の型を設定します。
パブリック メソッド SetSignature 戻り値の型、パラメータの型、戻り値の型とパラメータの型の必須およびオプションのカスタム修飾子を含むメソッド シグネチャを設定します。
パブリック メソッド SetSymCustomAttribute BLOB を使用して、シンボリック カスタム属性を設定します。
パブリック メソッド ToString オーバーライドされます。 この MethodBuilder インスタンスを文字列として返します。
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetIDsOfNames 一連の名前を対応する一連のディスパッチ識別子に割り当てます。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetTypeInfo オブジェクトの型情報を取得します。その後は、インターフェイスの型情報の取得に使用できます。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.GetTypeInfoCount オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。
インターフェイスの明示的な実装 System.Runtime.InteropServices._MethodBuilder.Invoke オブジェクトが公開するプロパティおよびメソッドにアクセスできるようにします。
参照参照

関連項目

MethodBuilder クラス
System.Reflection.Emit 名前空間

_MethodBuilder インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0 で新しく追加されたものです。

MethodBuilder クラスをアンマネージ コードに公開します。

 

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<ComVisibleAttribute(True)> _
<GuidAttribute("007D8A14-FDF3-363E-9A0B-FEC0618260A2")>
 _
<InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)> _
<CLSCompliantAttribute(False)> _
Public Interface _MethodBuilder
Dim instance As _MethodBuilder
[ComVisibleAttribute(true)] 
[GuidAttribute("007D8A14-FDF3-363E-9A0B-FEC0618260A2")] 
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] 
[CLSCompliantAttribute(false)] 
public interface _MethodBuilder
[ComVisibleAttribute(true)] 
[GuidAttribute(L"007D8A14-FDF3-363E-9A0B-FEC0618260A2")] 
[InterfaceTypeAttribute(ComInterfaceType::InterfaceIsIUnknown)] 
[CLSCompliantAttribute(false)] 
public interface class _MethodBuilder
/** @attribute ComVisibleAttribute(true) */ 
/** @attribute GuidAttribute("007D8A14-FDF3-363E-9A0B-FEC0618260A2") */
 
/** @attribute InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) */ 
/** @attribute CLSCompliantAttribute(false) */ 
public interface _MethodBuilder
ComVisibleAttribute(true) 
GuidAttribute("007D8A14-FDF3-363E-9A0B-FEC0618260A2") 
InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown) 
CLSCompliantAttribute(false) 
public interface _MethodBuilder
解説解説
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
_MethodBuilder メンバ
System.Runtime.InteropServices 名前空間

_MethodBuilder メソッド


_MethodBuilder メンバ




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「MethodBuilder」の関連用語

MethodBuilderのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



MethodBuilderのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS