エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

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

2013/12/12

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

Namespace:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public MethodInfo GetMethod(
	string name,
	Type[] types
)

パラメーター

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

戻り値

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

例外条件
AmbiguousMatchException

指定した名前および指定したパラメーターを持つメソッドが 2 つ以上見つかりました。

ArgumentNullException

namenull です。

または

typesnull です。

または

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

ArgumentException

types が多次元です。

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

メモメモ:

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

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

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

メモメモ:

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

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

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。



using System;
using System.Reflection;

class Example
{
   // Methods to get:

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

   public 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; }


   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      MethodInfo mInfo;

      // Get MethodA(int i, int i)
      mInfo = typeof(Example).GetMethod("MethodA",
          new Type[] { typeof(int), typeof(int) });
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(int[] i)
      mInfo = typeof(Example).GetMethod("MethodA",
          new Type[] { typeof(int[]) });
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(ref int r)
      mInfo = typeof(Example).GetMethod("MethodA",
          new Type[] { typeof(int).MakeByRefType() });
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

      // Get MethodA(int i, out int o)
      mInfo = typeof(Example).GetMethod("MethodA",
          new Type[] { typeof(int), typeof(int).MakeByRefType() });
      outputBlock.Text += String.Format("Found method: {0}", mInfo) + "\n";

   }
}

/* This method produces the following output:

Found method: Void MethodA(Int32, Int32)
Found method: Void MethodA(Int32[])
Found method: Void MethodA(Int32 ByRef)
Found method: Void MethodA(Int32, Int32 ByRef)
  */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft