System.Type.GetMethods 方法 (BindingFlags)

方法描述

当在派生类中重写时,使用指定绑定约束,搜索为当前 Type 定义的方法。

语法定义(C# System.Type.GetMethods 方法 (BindingFlags) 的用法)

public abstract MethodInfo[] GetMethods(
	BindingFlags bindingAttr
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
bindingAttr System-Reflection-BindingFlags 一个位屏蔽,由一个或多个指定搜索执行方式的 BindingFlags 组成。- 或 -零,以返回 null。
返回值 System.Reflection.MethodInfo[] 表示为当前 Type 定义的匹配指定绑定约束的所有方法的 MethodInfo 对象数组。 - 或 - 如果没有为当前 Type 定义的方法,或者如果没有一个定义的方法匹配绑定约束,则为 MethodInfo 类型的空数组。

提示和注释

GetMethods 方法不按特定的顺序(如字母顺序或声明顺序)返回方法。 您的代码一定不能依赖于方法的返回顺序,因为该顺序可以改变。

可以使用下列 BindingFlags 筛选标志定义包含在搜索中的方法:

为了获取返回值,必须指定 BindingFlags.Instance 或 BindingFlags.Static。

指定 BindingFlags.Public 可在搜索中包含公共方法。

指定 BindingFlags.NonPublic 可在搜索中包含非公共方法(即私有方法、内部方法和受保护的方法)。 只返回基类上的受保护方法和内部方法;不返回基类上的私有方法。

指定 BindingFlags.FlattenHierarchy 以便沿层次结构向上包括 public 和 protected 静态成员;不包括继承类中的 private 静态成员。

下列 BindingFlags 修饰符标志可用于更改搜索的执行方式:

BindingFlags.DeclaredOnly ,表示仅搜索在 Type 上声明的方法,而不搜索简单继承的方法。

有关更多信息,请参见 System.Reflection.BindingFlags。

注意

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

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

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

System.Type.GetMethods 方法 (BindingFlags)例子

下面的示例创建具有两个公共方法和一个受保护方法的类,创建一个对应于 MyTypeClass 的 Type 对象,获取所有公共和非公共方法,并显示它们的名称。

using System;
using System.Reflection;
using System.Reflection.Emit;

		// Create a class having two public methods and one protected method.
public class MyTypeClass
{
    public void MyMethods()
    {
    }
    public int MyMethods1() 
    {
        return 3;
    }
    protected String MyMethods2()
    {
        return "hello";
    }
}
public class TypeMain
{
    public static void Main() 
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public methods.
        MethodInfo[] myArrayMethodInfo = myType.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of public methods is {0}.", myArrayMethodInfo.Length);
        // Display all the methods.
        DisplayMethodInfo(myArrayMethodInfo);
        // Get the nonpublic methods.
        MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
        // Display information for all methods.
        DisplayMethodInfo(myArrayMethodInfo1);		
    }
    public static void DisplayMethodInfo(MethodInfo[] myArrayMethodInfo)
    {
        // Display information for all methods.
        for(int i=0;i

异常

异常 异常描述

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。