System.Type.GetEvents 方法 (BindingFlags)

方法描述

当在派生类中重写时,使用指定绑定约束,搜索由当前 Type 声明或继承的事件。

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

public abstract EventInfo[] GetEvents(
	BindingFlags bindingAttr
)

参数/返回值

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

提示和注释

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

下列 BindingFlags 筛选标志可用于定义包含在搜索中的事件:

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

指定 BindingFlags.Public 可在搜索中包含公共事件。

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

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

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

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

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

如果某事件至少有一个公共的方法或访问器,则该事件被视为对于反射是公共的。 否则,该事件将被视为私有,您必须使用 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static (在 Visual Basic 中,使用 Or 来组合值)以获取它。

如果当前 Type 表示构造泛型类型,则此方法将返回 EventInfo 对象,并且其类型形参替换为相应的类型实参。

如果当前 Type 表示泛型类型或泛型方法的定义中的类型参数,则此方法搜索类约束的事件。

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

若要编译 Visual Basic 示例,请使用以下命令行:

using System;
using System.Reflection;
using System.Security;

class EventsSample
{
    public static void Main()
    { 
        try
        {
            // Create a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public;  
            Type myTypeEvent = typeof(System.Windows.Forms.Button);
            EventInfo[] myEventsBindingFlags = myTypeEvent.GetEvents(myBindingFlags);
            Console.WriteLine("\nThe events on the Button class with the specified BindingFlags are:");
            for (int index = 0; index < myEventsBindingFlags.Length; index++)
            {
                Console.WriteLine(myEventsBindingFlags[index].ToString());
            }
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException:" + e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }
}

异常

异常 异常描述

命名空间

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 系统要求。