このドキュメントはアーカイブされており、メンテナンスされていません。

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

更新 : 2007 年 11 月

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

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

public MethodInfo GetMethod(
	string name,
	Type[] types
)
public final MethodInfo GetMethod(
	String name,
	Type[] types
)
public final function GetMethod(
	name : String, 
	types : Type[]
) : MethodInfo

パラメータ

name
型 : System.String
取得するパブリック メソッドの名前を格納している String
types
型 : System.Type[]
取得するメソッドのパラメータの数、順序、および型を表す Type オブジェクトの配列。
または
パラメータをとらないメソッドを取得するための Type オブジェクトの空の配列 (EmptyTypes フィールドで指定)。

戻り値

型 : System.Reflection.MethodInfo
指定した引数型と一致するパラメータが設定されたパブリック メソッドが存在する場合は、そのパブリック メソッドを表す MethodInfo オブジェクト。それ以外の場合は null

実装

_Type.GetMethod(String, Type[])

例外条件
AmbiguousMatchException

指定した名前を持ち、指定したパラメータが設定されているメソッドが 2 つ以上存在します。

ArgumentNullException

namenull です。

または

typesnull です。

または

types の要素の 1 つが null です。

ArgumentException

types が多次元です。

name の検索では大文字と小文字が区別されます。検索には、public static および public のインスタンス メソッドが含まれます。

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

6hy0h0z1.alert_note(ja-jp,VS.90).gifメモ :

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

現在の T:System.Type が構築ジェネリック型を表している場合、このメソッドは、型パラメータを適切な型の引数で置き換えて MethodInfo を返します。

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

6hy0h0z1.alert_note(ja-jp,VS.90).gifメモ :

name パラメータに、型引数を含めることはできません。たとえば、C# コード GetMethod("MyGenericMethod<int>") は、型 int の汎用引数を 1 つ持っている MyGenericMethod という名前のメソッドではなく、テキスト名 "MyGenericMethod<int>" というメソッドを検索します。

さまざまな引数型を指定し、MethodA の特定のオーバーロードを検索するコード例を次に示します。

6hy0h0z1.alert_note(ja-jp,VS.90).gifメモ :

Visual C# 2005 の例には、/unsafe コンパイラ オプションが必要です。


using System;
using System.Reflection;

class Program
{
    // Methods to get:

    public void MethodA(int i, int j) { }

    public void MethodA(int[] i) { }

    public unsafe void MethodA(int* i) { }

    public void MethodA(ref int r) {}

    // Method that takes an out parameter:
    public void MethodA(int i, out int o) { o = 100;}


  static void Main(string[] args)
  {
    MethodInfo mInfo;

    // Get MethodA(int i, int i)
    mInfo = typeof(Program).GetMethod("MethodA",
        new Type[] { typeof(int), typeof(int) });
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int[] i)
    mInfo = typeof(Program).GetMethod("MethodA",
        new Type[] { typeof(int[]) });
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int* i)
    mInfo = typeof(Program).GetMethod("MethodA",
        new Type[] { typeof(int).MakePointerType() });
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(ref int r)
    mInfo = typeof(Program).GetMethod("MethodA",
        new Type[] { typeof(int).MakeByRefType() });
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int i, out int o)
    mInfo = typeof(Program).GetMethod("MethodA",
        new Type[] { typeof(int), typeof(int).MakeByRefType() });
    Console.WriteLine("Found method: {0}", mInfo);

  }
}



import System.*;
import System.Reflection.*;

public class Program
{
	// Methods to get:

	// Method that takes two integers:
	public void MethodA(int i, int j) { }
	// Method that takes an array
	public void MethodA(int[] i) { }

    public static void main(String[] args)
    {
		MethodInfo mInfo;
		Type tProgram = Program.class.ToType();


		// Get  MethodA(Int32, Int32)
		mInfo = tProgram.GetMethod("MethodA",
			new Type[] { int.class.ToType(), int.class.ToType()});
		Console.WriteLine("Found method: {0}", mInfo);

		// Get MethodA(int[])
		mInfo = tProgram.GetMethod("MethodA",
			new Type[] { int[].class.ToType() });
		Console.WriteLine("Found method: {0}", mInfo);

    }
}



Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0、2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 3.5、2.0、1.0

XNA Framework

サポート対象 : 2.0、1.0
表示: