System.Type.GetEvent 方法 (String, BindingFlags)

方法描述

当在派生类中重写时,使用指定绑定约束,返回表示指定事件的 EventInfo 对象。

语法定义(C# System.Type.GetEvent 方法 (String, BindingFlags) 的用法)

public abstract EventInfo GetEvent(
	string name,
	BindingFlags bindingAttr
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
name System-String 字符串包含由当前的 Type 声明或继承的事件的名称。
bindingAttr System-Reflection-BindingFlags 一个位屏蔽,由一个或多个指定搜索执行方式的 BindingFlags 组成。- 或 -零,以返回 null。
返回值 System.Reflection.EventInfo 该对象表示当前 Type 所声明或继承的指定事件;如果找到,则为该对象,否则为 null。

提示和注释

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

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

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

指定 BindingFlags.NonPublic 可在搜索中包含非公共事件(即私有事件、内部事件和受保护的事件)。

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

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

BindingFlags.IgnoreCase ,表示忽略 name 的大小写。

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

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

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

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

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

System.Type.GetEvent 方法 (String, BindingFlags)例子

下面的代码示例使用 GetEvent(String, BindingFlags) 方法搜索公共或非公共事件的类型,该事件名称为“Click”且不为 static(在 Visual Basic 中为 Shared)。

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

class MyEventExample
{
    public static void Main()
    {  
        try
        {

            // Creates a bitmask based on BindingFlags.
            BindingFlags myBindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic;
            Type myTypeBindingFlags = typeof(System.Windows.Forms.Button);
            EventInfo myEventBindingFlags = myTypeBindingFlags.GetEvent("Click", myBindingFlags);
            if(myEventBindingFlags != null)
            {
                Console.WriteLine("Looking for the Click event in the Button class with the specified BindingFlags.");
                Console.WriteLine(myEventBindingFlags.ToString());
            }
            else
                Console.WriteLine("The Click event is not available with the Button class.");
        }
        catch(SecurityException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Message :"+e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("The following exception was raised : {0}",e.Message);
        }
    }
}

异常

异常 异常描述
ArgumentNullException name 为 null。

命名空间

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