次の方法で共有


Type.GetMethods メソッド

定義

現在の Typeのメソッドを取得します。

オーバーロード

名前 説明
GetMethods()

現在の Typeのすべてのパブリック メソッドを返します。

GetMethods(BindingFlags)

派生クラスでオーバーライドされた場合は、指定したバインド制約を使用して、現在の Typeに対して定義されているメソッドを検索します。

GetMethods()

ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs

現在の Typeのすべてのパブリック メソッドを返します。

public:
 cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public:
 virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public System.Reflection.MethodInfo[] GetMethods();
public System.Reflection.MethodInfo[] GetMethods();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
abstract member GetMethods : unit -> System.Reflection.MethodInfo[]
override this.GetMethods : unit -> System.Reflection.MethodInfo[]
Public Function GetMethods () As MethodInfo()

返品

現在のTypeに対して定義されているすべてのパブリック メソッドを表すMethodInfo オブジェクトの配列。

-又は-

現在のTypeに対してパブリック メソッドが定義されていない場合は、MethodInfo型の空の配列。

実装

属性

注釈

.NET 6 以前のバージョンでは、GetMethods メソッドは、アルファベット順や宣言順などの特定の順序でメソッドを返しません。 コードはメソッドが返される順序に依存してはなりません。順序は異なるためです。 ただし、.NET 7 以降では、順序付けはアセンブリ内のメタデータの順序に基づいて決定論的です。

コンストラクターは、この呼び出しによって返されるメソッドの配列には含まれません。 コンストラクター メソッドを取得するために、 GetConstructors() を個別に呼び出します。

次の表は、型に反映するときに、 Get メソッドによって返される基底クラスのメンバーを示しています。

メンバーの種類 スタティック 非静的
コンストラクター いいえ いいえ
フィールド いいえ Yes. フィールドは常に名前と署名によって非表示になります。
イベント 適用なし 一般的な型システムルールは、継承がプロパティを実装するメソッドの継承と同じであるということです。 リフレクションは、プロパティを名前と署名による非表示として扱います。 以下の注 2 を参照してください。
メソッド いいえ Yes. メソッド (仮想と非仮想の両方) は、名前で非表示にすることも、名前と署名で非表示にすることもできます。
入れ子にされた型 いいえ いいえ
財産 適用なし 一般的な型システムルールは、継承がプロパティを実装するメソッドの継承と同じであるということです。 リフレクションは、プロパティを名前と署名による非表示として扱います。 以下の注 2 を参照してください。
  1. 名前と署名による隠蔽は、カスタム修飾子、戻り値の型、パラメーター型、センチネル、そしてアンマネージド呼び出し規則を含む、署名のすべての部分を考慮します。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティとイベントは名前と署名によって非表示になります。 基底クラスに get アクセサーと set アクセサーの両方を持つプロパティがあるが、派生クラスに get アクセサーしかない場合、派生クラス プロパティは基底クラス プロパティを非表示にし、基底クラスのセッターにアクセスすることはできません。

  3. カスタム属性は、共通型システムの一部ではありません。

コンストラクターとメソッドを参照するときにパラメーターを省略することはできません。 パラメーターは、呼び出し時にのみ省略できます。

現在の Type が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ MethodInfo オブジェクトを返します。

現在の Type がジェネリック型またはジェネリック メソッドの定義で型パラメーターを表す場合、このメソッドはクラス制約のメソッド、またはクラス制約がない場合は Object のメソッドを検索します。

こちらもご覧ください

適用対象

GetMethods(BindingFlags)

ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs
ソース:
Type.cs

派生クラスでオーバーライドされた場合は、指定したバインド制約を使用して、現在の Typeに対して定義されているメソッドを検索します。

public:
 abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()

パラメーター

bindingAttr
BindingFlags

検索の実行方法を指定する列挙値のビットごとの組み合わせ。

-又は-

Default 空の配列を返します。

返品

指定したバインド制約に一致する現在のTypeに対して定義されているすべてのメソッドを表すMethodInfo オブジェクトの配列。

-又は-

現在のTypeに対してメソッドが定義されていない場合、または定義されたメソッドのいずれもバインディング制約に一致しない場合は、MethodInfo型の空の配列。

実装

属性

次の例では、2 つのパブリック メソッドと 1 つの保護されたメソッドを持つクラスを作成し、MyTypeClassに対応するType オブジェクトを作成し、すべてのパブリック メソッドと非パブリック メソッドを取得し、その名前を表示します。

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

// Create a class having two public methods and one protected method.
public class MyTypeClass
{
    public void MyMethods()
    {
    }
    public int MyMethods1()
    {
        return 3;
    }
    protected String MyMethods2()
    {
        return "hello";
    }
}
public class TypeMain
{
    public static void Main()
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public methods.
        MethodInfo[] myArrayMethodInfo = myType.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of public methods is {0}.", myArrayMethodInfo.Length);
        // Display all the methods.
        DisplayMethodInfo(myArrayMethodInfo);
        // Get the nonpublic methods.
        MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
        // Display information for all methods.
        DisplayMethodInfo(myArrayMethodInfo1);		
    }
    public static void DisplayMethodInfo(MethodInfo[] myArrayMethodInfo)
    {
        // Display information for all methods.
        for(int i=0;i<myArrayMethodInfo.Length;i++)
        {
            MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i];
            Console.WriteLine("\nThe name of the method is {0}.", myMethodInfo.Name);
        }
    }
}

Imports System.Reflection
Imports System.Reflection.Emit

' Create a class having two public methods and one protected method.
Public Class MyTypeClass
    Public Sub MyMethods()
    End Sub
    Public Function MyMethods1() As Integer
        Return 3
    End Function 'MyMethods1
    Protected Function MyMethods2() As [String]
        Return "hello"
    End Function 'MyMethods2
End Class
Public Class TypeMain
    Public Shared Sub Main()

        Dim myType As Type = GetType(MyTypeClass)
        ' Get the public methods.
        Dim myArrayMethodInfo As MethodInfo() = myType.GetMethods((BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of public methods is " & myArrayMethodInfo.Length.ToString() & "."))
        ' Display all the public methods.
        DisplayMethodInfo(myArrayMethodInfo)
        ' Get the nonpublic methods.
        Dim myArrayMethodInfo1 As MethodInfo() = myType.GetMethods((BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of protected methods is " & myArrayMethodInfo1.Length.ToString() & "."))
        ' Display all the nonpublic methods.
        DisplayMethodInfo(myArrayMethodInfo1)
    End Sub

    Public Shared Sub DisplayMethodInfo(ByVal myArrayMethodInfo() As MethodInfo)
        ' Display information for all methods.
        Dim i As Integer
        For i = 0 To myArrayMethodInfo.Length - 1
            Dim myMethodInfo As MethodInfo = CType(myArrayMethodInfo(i), MethodInfo)
            Console.WriteLine((ControlChars.Cr + "The name of the method is " & myMethodInfo.Name & "."))
        Next i
    End Sub
End Class

注釈

GetMethods(BindingFlags)オーバーロードがメソッド情報を正常に取得するには、bindingAttr引数に少なくとも 1 つのBindingFlags.InstanceBindingFlags.Staticと、少なくとも 1 つのBindingFlags.NonPublicBindingFlags.Publicが含まれている必要があります。

次の BindingFlags フィルター フラグを使用して、検索に含めるメソッドを定義できます。

  • インスタンス メソッドを含める BindingFlags.Instance を指定します。

  • 静的メソッドを含める BindingFlags.Static を指定します。

  • 検索にパブリック メソッドを含める BindingFlags.Public を指定します。

  • BindingFlags.NonPublicを指定して、非パブリック メソッド (プライベート、内部、および保護されたメソッド) を検索に含めます。 基底クラスの保護されたメソッドと内部メソッドのみが返されます。基底クラスのプライベート メソッドは返されません。

  • BindingFlags.FlattenHierarchyおよびpublic静的メンバーを階層に含めるprotectedを指定します。継承されたクラスprivate静的メンバーは含まれません。

  • BindingFlags.DefaultMethodInfo配列を返すには、単独で指定します。

次の BindingFlags 修飾子フラグを使用して、検索の動作を変更できます。

  • BindingFlags.DeclaredOnly 単に継承されたメソッドではなく、 Typeで宣言されたメソッドのみを検索する場合。

詳細については、System.Reflection.BindingFlags を参照してください。

.NET 6 以前のバージョンでは、GetMethods メソッドは、アルファベット順や宣言順などの特定の順序でメソッドを返しません。 コードはメソッドが返される順序に依存してはなりません。順序は異なるためです。 ただし、.NET 7 以降では、順序付けはアセンブリ内のメタデータの順序に基づいて決定論的です。

現在の Type が構築されたジェネリック型を表す場合、このメソッドは、適切な型引数に置き換えられた型パラメーターを持つ MethodInfo オブジェクトを返します。

現在の Type がジェネリック型またはジェネリック メソッドの定義で型パラメーターを表す場合、このメソッドはクラス制約のメソッド、またはクラス制約がない場合は Object のメソッドを検索します。

こちらもご覧ください

適用対象