次の方法で共有


Type.GetMethod メソッド (String, Type )

指定したパブリック メソッドのうち、指定した引数型と一致するパラメータが設定されているものを検索します。

Overloads Public Function GetMethod( _
   ByVal name As String, _   ByVal types() As Type _) As MethodInfo
[C#]
public MethodInfo GetMethod(stringname,Type[] types);
[C++]
public: MethodInfo* GetMethod(String* name,Type* types[]);
[JScript]
public function GetMethod(
   name : String,types : Type[]) : MethodInfo;

パラメータ

  • name
    取得するパブリック メソッドの名前を格納している String

  • types
    取得するメソッドのパラメータの数、順序、および型を表す Type オブジェクトの配列。

    または

    パラメータをとらないメソッドを取得するための、 Type 型の空の配列 (Type[] types = new Type[0])。

戻り値

指定した引数型と一致するパラメータが設定されたパブリック メソッドが存在する場合は、そのパブリック メソッドを表す MethodInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。

例外

例外の種類 条件
AmbiguousMatchException 指定した名前を持ち、指定したパラメータが設定されているメソッドが 2 つ以上存在します。
ArgumentNullException name が null 参照 (Visual Basic では Nothing) です。

または

types が null 参照 (Nothing) です。

または

types の 1 つの要素が null 参照 (Nothing) です。

ArgumentException types が多次元です。

解説

name の検索では大文字と小文字が区別されます。

要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。

メモ   コンストラクタおよびメソッドを検索する場合、パラメータは省略できません。パラメータは呼び出すときだけ省略できます。

使用例

[Visual Basic, C#, C++] オーバーロードされたメソッドを持つクラスの例を次に示します。 MyClass1 に対応する Type オブジェクトを取得し、 GetMethod を呼び出します。このメソッドの呼び出しにより、パラメータが型の配列で指定した引数と一致するメソッドが返されます。

 

Imports System
Imports System.Reflection

Public Class MyClass1
    Public Overloads Sub MyMethod(ByVal i As Integer)
    End Sub
    Public Overloads Sub MyMethod(ByVal i As Integer, ByVal j As Integer)
    End Sub
End Class
Public Class TestMyClass
    Public Shared Sub Main()
        Try
            ' Get a Type object corresponding to MyClass1.
            Dim myClassType As Type = GetType(MyClass1)
            ' Create a Type array.
            Dim typeArray(0) As Type
            typeArray.SetValue(GetType(Integer), 0)
            ' Find the method matching the specified argument types.
            Dim myMethodInfo As MethodInfo = myClassType.GetMethod("MyMethod", typeArray)
            Console.WriteLine("The name of the Method :" & myMethodInfo.ToString())
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub
End Class

[C#] 

using System;
using System.Reflection;

public class MyClass1
{
    public void MyMethod(int i)
    {
    }
    public void MyMethod(int i,int j)
    {
    }
}
public class TestMyClass
{
    public static void Main()
    {
        try
        {
            // Get a Type object corresponding to MyClass1.
            Type myClassType = typeof(MyClass1);
            // Create a Type array.
            Type[] typeArray =new Type[1];
            typeArray.SetValue(typeof(int),0);
            // Find the method matching the specified argument types.
            MethodInfo myMethodInfo = 
                myClassType.GetMethod("MyMethod", typeArray);
            Console.WriteLine("The name of the method :" + myMethodInfo);
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }
}

[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

public __gc class MyClass1 {
public:
   void MyMethod(int) {
   }
   void MyMethod(int, int) {
   }
};

int main() {
   try {
      // Get a Type object corresponding to MyClass1.
      Type*  myClassType = __typeof(MyClass1);
      // Create a Type array.
      Type* typeArray[] = new Type*[1];
      typeArray->SetValue(__typeof(int), 0);
      // Find the method matching the specified argument types.
      MethodInfo*  myMethodInfo =
         myClassType->GetMethod(S"MyMethod", typeArray);
      Console::WriteLine(S"The name of the method : {0}", myMethodInfo);
   } catch (Exception* e) {
      Console::WriteLine(e->Message);
   }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

.NET Framework セキュリティ:

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetMethod オーバーロードの一覧 | MethodInfo | String | DefaultBinder | ReflectionPermission | GetMethodImpl | GetMethods