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 セキュリティ:
- ReflectionPermission (非パブリック オブジェクトをリフレクション操作するために必要なアクセス許可) ReflectionPermissionFlag.TypeInformation (関連する列挙体)
参照
Type クラス | Type メンバ | System 名前空間 | Type.GetMethod オーバーロードの一覧 | MethodInfo | String | DefaultBinder | ReflectionPermission | GetMethodImpl | GetMethods