EventInfo 类

定义

发现事件的属性并提供对事件元数据的访问权限。

public ref class EventInfo abstract : System::Reflection::MemberInfo
public ref class EventInfo abstract : System::Reflection::MemberInfo, System::Runtime::InteropServices::_EventInfo
public abstract class EventInfo : System.Reflection.MemberInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public abstract class EventInfo : System.Reflection.MemberInfo, System.Runtime.InteropServices._EventInfo
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public abstract class EventInfo : System.Reflection.MemberInfo, System.Runtime.InteropServices._EventInfo
type EventInfo = class
    inherit MemberInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type EventInfo = class
    inherit MemberInfo
    interface _EventInfo
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type EventInfo = class
    inherit MemberInfo
    interface _EventInfo
Public MustInherit Class EventInfo
Inherits MemberInfo
Public MustInherit Class EventInfo
Inherits MemberInfo
Implements _EventInfo
继承
EventInfo
派生
属性
实现

示例

以下代码获取 EventInfo 类的 Button 事件的 对象Click

#using <System.dll>
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
using namespace System::Windows::Forms;

int main()
{
   try
   {
      // Creates a bitmask based on BindingFlags.
      BindingFlags myBindingFlags = static_cast<BindingFlags>(BindingFlags::Instance | BindingFlags::Public | BindingFlags::NonPublic);
      Type^ myTypeBindingFlags = System::Windows::Forms::Button::typeid;
      EventInfo^ myEventBindingFlags = myTypeBindingFlags->GetEvent( "Click", myBindingFlags );
      if ( myEventBindingFlags != nullptr )
      {
         Console::WriteLine( "Looking for the Click event in the Button class with the specified BindingFlags." );
         Console::WriteLine( myEventBindingFlags );
      }
      else
            Console::WriteLine( "The Click event is not available with the Button class." );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "An exception occurred." );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "The following exception was raised : {0}", e->Message );
   }
}
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);
        }
    }
}
Imports System.Reflection
Imports System.Security

' Compile this sample using the following command line:
' vbc type_getevent.vb /r:"System.Windows.Forms.dll" /r:"System.dll"

Class MyEventExample
    Public Shared Sub Main()
        Try
            ' Creates a bitmask comprising  BindingFlags.
            Dim myBindingFlags As BindingFlags = BindingFlags.Instance Or BindingFlags.Public _
                                                 Or BindingFlags.NonPublic
            Dim myTypeBindingFlags As Type = GetType(System.Windows.Forms.Button)
            Dim myEventBindingFlags As EventInfo = myTypeBindingFlags.GetEvent("Click", myBindingFlags)
            If myEventBindingFlags IsNot Nothing Then
                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.")
            End If
        Catch e As SecurityException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As ArgumentNullException
            Console.WriteLine("An exception occurred.")
            Console.WriteLine("Message :" + e.Message)
        Catch e As Exception
            Console.WriteLine("The following exception was raised : {0}", e.Message)
        End Try
    End Sub
End Class

注解

EventInfo使用 类检查事件和挂接事件处理程序,如 方法的示例代码AddEventHandler所示。

注意

EventInfo 不用于引发事件。 对象按其内部状态指示引发事件。

事件与委托一起使用。 事件侦听器实例化每当事件源引发事件时调用的事件处理程序委托。 为了连接到事件源,事件侦听器将此委托添加到源上的调用列表。 引发事件时,将调用事件处理程序委托的 invoke 方法。 支持多播和单强制转换事件通知。 AddRemove 方法以及与事件关联的事件处理程序委托类必须在元数据中标记。

委托是面向对象的函数指针。 在 C 或 C++ 中,函数指针是对方法的引用。 与 C 或 C++ 函数指针相比,委托包含两个引用:对方法的引用和对支持 方法的对象的引用。 委托可以在不知道声明或继承方法的类类型的情况下调用方法。 委托只需知道方法的返回类型和参数列表。

事件模型同样适用于单强制转换和多播委托。 调用委托的 invoke 方法时,只有单个对象将在其上调用方法。 多播修饰符可以应用于委托声明,该声明允许在调用委托的 invoke 方法时调用多个方法。

当 的 GetCustomAttributes 参数为 trueinherit,在 上EventInfo调用 ICustomAttributeProvider.GetCustomAttributes 不会遍进类型层次结构。 使用 System.Attribute 继承自定义属性。

实施者说明

EventInfo继承时,必须重写以下成员: GetAddMethod(Boolean)GetRemoveMethod(Boolean)GetRaiseMethod(Boolean)

构造函数

EventInfo()

初始化 EventInfo 类的新实例。

属性

AddMethod

获取事件的 AddEventHandler(Object, Delegate) 方法的 MethodInfo 对象,包括非公共方法。

Attributes

获取此事件的属性。

CustomAttributes

获取包含此成员自定义属性的集合。

(继承自 MemberInfo)
DeclaringType

获取声明该成员的类。

(继承自 MemberInfo)
EventHandlerType

获取与此事件关联的基础事件处理程序委托的 Type 对象。

IsCollectible

获取一个值,该值指示此 MemberInfo 对象是否是包含在可回收的 AssemblyLoadContext 中的程序集的一部分。

(继承自 MemberInfo)
IsMulticast

获取一个值,该值指示事件是否为多播。

IsSpecialName

获取一个值,该值指示 EventInfo 是否具有一个有特殊意义的名称。

MemberType

获取 MemberTypes 值,指示此成员为一个事件。

MemberType

在派生类中重写时,获取 MemberTypes 值,该值指示成员类型 - 方法、构造函数、事件等。

(继承自 MemberInfo)
MetadataToken

获取一个值,该值标识元数据元素。

(继承自 MemberInfo)
Module

获取一个模块,在该模块中已经定义一个类型,该类型用于声明由当前 MemberInfo 表示的成员。

(继承自 MemberInfo)
Name

获取当前成员的名称。

(继承自 MemberInfo)
RaiseMethod

获取引发该事件时所调用的方法,包括非公共方法。

ReflectedType

获取用于获取 MemberInfo 的此实例的类对象。

(继承自 MemberInfo)
RemoveMethod

获取用于删除事件方法的 MethodInfo 对象,包括非公共方法。

方法

AddEventHandler(Object, Delegate)

将事件处理程序添加到事件源。

Equals(Object)

返回一个值,该值指示此实例是否与指定的对象相等。

Equals(Object)

返回一个值,该值指示此实例是否与指定的对象相等。

(继承自 MemberInfo)
GetAddMethod()

返回用于向事件源添加事件处理程序委托的方法。

GetAddMethod(Boolean)

在派生类中重写时,为事件的 AddEventHandler(Object, Delegate) 方法检索 MethodInfo 对象,指定是否返回非公共方法。

GetCustomAttributes(Boolean)

在派生类中重写时,返回应用于此成员的所有自定义属性的数组。

(继承自 MemberInfo)
GetCustomAttributes(Type, Boolean)

在派生类中重写时,返回应用于此成员并由 Type 标识的自定义属性的数组。

(继承自 MemberInfo)
GetCustomAttributesData()

返回 CustomAttributeData 对象列表,这些对象表示已应用到目标成员的特性相关数据。

(继承自 MemberInfo)
GetHashCode()

返回此实例的哈希代码。

GetHashCode()

返回此实例的哈希代码。

(继承自 MemberInfo)
GetOtherMethods()

返回在元数据中使用 .other 指令与事件相关联的公共方法。

GetOtherMethods(Boolean)

返回在元数据中使用 .other 指令与事件相关联的方法,指定是否包括非公共方法。

GetRaiseMethod()

返回引发事件时所调用的方法。

GetRaiseMethod(Boolean)

在派生类中重写时,返回引发事件时调用的方法,指定是否返回非公共方法。

GetRemoveMethod()

返回用于从事件源删除事件处理程序委托的方法。

GetRemoveMethod(Boolean)

在派生类中重写时,检索用于删除事件方法的 MethodInfo 对象,指定是否返回非公共方法。

GetType()

发现类事件的属性并提供对事件元数据的访问权限。

GetType()

发现成员的属性并提供对成员元数据的访问权限。

(继承自 MemberInfo)
HasSameMetadataDefinitionAs(MemberInfo)

发现事件的属性并提供对事件元数据的访问权限。

(继承自 MemberInfo)
IsDefined(Type, Boolean)

在派生类中重写时,指示是否将指定类型或其派生类型的一个或多个特性应用于此成员。

(继承自 MemberInfo)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
RemoveEventHandler(Object, Delegate)

从事件源中删除事件处理程序。

ToString()

返回表示当前对象的字符串。

(继承自 Object)

运算符

Equality(EventInfo, EventInfo)

指示两个 EventInfo 对象是否相等。

Inequality(EventInfo, EventInfo)

指示两个 EventInfo 对象是否不相等。

显式接口实现

_EventInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

将一组名称映射为对应的一组调度标识符。

_EventInfo.GetType()

返回表示 T:System.Type 类型的 EventInfo 对象。

_EventInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

检索对象的类型信息,然后可以使用该信息获取接口的类型信息。

_EventInfo.GetTypeInfoCount(UInt32)

检索对象提供的类型信息接口的数量(0 或 1)。

_EventInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供对某一对象公开的属性和方法的访问。

_MemberInfo.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

将一组名称映射为对应的一组调度标识符。

(继承自 MemberInfo)
_MemberInfo.GetType()

获取一个表示 MemberInfo 类的 Type 对象。

(继承自 MemberInfo)
_MemberInfo.GetTypeInfo(UInt32, UInt32, IntPtr)

检索对象的类型信息,然后可以使用该信息获取接口的类型信息。

(继承自 MemberInfo)
_MemberInfo.GetTypeInfoCount(UInt32)

检索对象提供的类型信息接口的数量(0 或 1)。

(继承自 MemberInfo)
_MemberInfo.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供对某一对象公开的属性和方法的访问。

(继承自 MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Boolean)

返回在该成员上定义的所有自定义特性的数组(已命名的特性除外),如果没有自定义特性,则返回空数组。

(继承自 MemberInfo)
ICustomAttributeProvider.GetCustomAttributes(Type, Boolean)

返回在该成员上定义、由类型标识的自定义属性数组,如果没有该类型的自定义属性,则返回空数组。

(继承自 MemberInfo)
ICustomAttributeProvider.IsDefined(Type, Boolean)

指示是否在该成员上定义了一个或多个 attributeType 实例。

(继承自 MemberInfo)

扩展方法

GetCustomAttribute(MemberInfo, Type)

检索应用于指定成员的指定类型的自定义特性。

GetCustomAttribute(MemberInfo, Type, Boolean)

检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。

GetCustomAttribute<T>(MemberInfo)

检索应用于指定成员的指定类型的自定义特性。

GetCustomAttribute<T>(MemberInfo, Boolean)

检索应用于指定成员的指定类型的自定义特性,并可选择检查该成员的上级。

GetCustomAttributes(MemberInfo)

检索应用于指定成员的自定义特性集合。

GetCustomAttributes(MemberInfo, Boolean)

检索应用于指定成员的自定义特性集合,并可选择检查该成员的上级。

GetCustomAttributes(MemberInfo, Type)

检索应用于指定成员的指定类型的自定义特性集合。

GetCustomAttributes(MemberInfo, Type, Boolean)

检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。

GetCustomAttributes<T>(MemberInfo)

检索应用于指定成员的指定类型的自定义特性集合。

GetCustomAttributes<T>(MemberInfo, Boolean)

检索应用于指定成员的指定类型的自定义特性集合,并可选择检查该成员的上级。

IsDefined(MemberInfo, Type)

确定是否将指定类型的任何自定义属性应用于指定的成员。

IsDefined(MemberInfo, Type, Boolean)

指示一个指定类型的自定义特性是否应用于一个指定的数字,并选择性地应用于其的上级。

GetAddMethod(EventInfo)

发现事件的属性并提供对事件元数据的访问权限。

GetAddMethod(EventInfo, Boolean)

发现事件的属性并提供对事件元数据的访问权限。

GetRaiseMethod(EventInfo)

发现事件的属性并提供对事件元数据的访问权限。

GetRaiseMethod(EventInfo, Boolean)

发现事件的属性并提供对事件元数据的访问权限。

GetRemoveMethod(EventInfo)

发现事件的属性并提供对事件元数据的访问权限。

GetRemoveMethod(EventInfo, Boolean)

发现事件的属性并提供对事件元数据的访问权限。

GetMetadataToken(MemberInfo)

获取给定成员的元数据令牌(如果可用)。

HasMetadataToken(MemberInfo)

返回表示元数据令牌是否可用于指定的成员的值。

适用于

线程安全性

此类型是线程安全的。