信息
您所需的主题如下所示。但此主题未包含在此库中。

Type.GetMethod 方法 (String, Type[])

2013/12/13

搜索其参数与指定参数类型匹配的指定公共方法。

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

找到不止一个具有指定名称和指定参数的方法。

ArgumentNullException

namenull

- 或 -

typesnull

- 或 -

types 中的一个元素为 null

ArgumentException

types 是多维的。

name 的搜索区分大小写。搜索范围包括公共静态方法和公共实例方法。

说明注意:

查找构造函数和方法时不能省略参数。只能在调用时省略参数。

如果当前 T:System.Type 表示某种已构造的泛型类型,则此方法将返回 MethodInfo,并且其类型参数由相应的类型参数替换。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的方法或 Object 的方法(如果没有类约束的话)。

说明注意:

name 参数不能包含类型参数。例如,C# 代码 GetMethod("MyGenericMethod<int>") 搜索文本名称为“MyGenericMethod<int>”的方法,而不是搜索具有一个 int 类型的泛型实参的名为 MyGenericMethod 的方法。请改用 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

Windows Phone

显示: