EventInfo 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
发现事件的属性并提供对事件元数据的访问权限。
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 类的 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 不用于引发事件。 对象按其内部状态指示引发事件。
事件与委托一起使用。 事件侦听器实例化事件处理程序委托,每当事件源引发事件时,就会调用该委托。 为了连接到事件源,事件侦听器将此委托添加到源上的调用列表。 引发 事件时,将调用事件处理程序委托的调用方法。 支持多播和单强制转换事件通知。
Add
和 Remove
方法以及与事件关联的事件处理程序委托类必须在元数据中标记。
委托是面向对象的函数指针。 在 C 或 C++ 中,函数指针是对方法的引用。 与 C 或 C++ 函数指针相比,委托包含两个引用:对方法的引用和对支持 该方法的对象的引用。 委托可以在不知道声明或继承方法的类类型的情况下调用方法。 委托只需知道方法的返回类型和参数列表。
事件模型同样适用于单强制转换和多播委托。 调用委托的调用方法时,只有单个对象将在其上调用方法。 多播修饰符可以应用于委托声明,该声明允许在调用委托的 invoke 方法时调用多个方法。
ICustomAttributeProvider.GetCustomAttributes
EventInfo
当 的 参数 GetCustomAttributes
为 true
时inherit
调用 不会遍排类型层次结构。 使用 System.Attribute 继承自定义属性。
实施者说明
从 EventInfo
继承时,必须重写以下成员: GetAddMethod(Boolean)、 GetRemoveMethod(Boolean)和 GetRaiseMethod(Boolean)。
构造函数
EventInfo() |
初始化 |
属性
AddMethod |
获取事件的 AddEventHandler(Object, Delegate) 方法的 MethodInfo 对象,包括非公共方法。 |
Attributes |
获取此事件的属性。 |
CustomAttributes |
获取包含此成员自定义属性的集合。 (继承自 MemberInfo) |
DeclaringType |
获取声明该成员的类。 (继承自 MemberInfo) |
EventHandlerType |
获取与此事件关联的基础事件处理程序委托的 |
IsCollectible |
获取一个值,该值指示此 MemberInfo 对象是否是包含在可回收的 AssemblyLoadContext 中的程序集的一部分。 (继承自 MemberInfo) |
IsMulticast |
获取一个值,该值指示事件是否为多播。 |
IsSpecialName |
获取一个值,该值指示 |
MemberType |
获取 MemberTypes 值,指示此成员为一个事件。 |
MemberType |
在派生类中重写时,获取 MemberTypes 值,该值指示成员类型 - 方法、构造函数、事件等。 (继承自 MemberInfo) |
MetadataToken |
获取一个值,该值标识元数据元素。 (继承自 MemberInfo) |
Module |
获取一个模块,在该模块中已经定义一个类型,该类型用于声明由当前 MemberInfo 表示的成员。 (继承自 MemberInfo) |
Name |
获取当前成员的名称。 (继承自 MemberInfo) |
RaiseMethod |
获取引发该事件时所调用的方法,包括非公共方法。 |
ReflectedType |
获取用于获取 |
RemoveMethod |
获取用于删除事件方法的 |
方法
AddEventHandler(Object, Delegate) |
将事件处理程序添加到事件源。 |
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 |
Equals(Object) |
返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 MemberInfo) |
GetAddMethod() |
返回用于向事件源添加事件处理程序委托的方法。 |
GetAddMethod(Boolean) |
在派生类中重写时,为事件的 AddEventHandler(Object, Delegate) 方法检索 |
GetCustomAttributes(Boolean) |
在派生类中重写时,返回应用于此成员的所有自定义属性的数组。 (继承自 MemberInfo) |
GetCustomAttributes(Type, Boolean) |
在派生类中重写时,返回应用于此成员并由 Type 标识的自定义属性的数组。 (继承自 MemberInfo) |
GetCustomAttributesData() |
返回 CustomAttributeData 对象列表,这些对象表示已应用到目标成员的特性相关数据。 (继承自 MemberInfo) |
GetHashCode() |
返回此实例的哈希代码。 |
GetHashCode() |
返回此实例的哈希代码。 (继承自 MemberInfo) |
GetOtherMethods() |
返回在元数据中使用 |
GetOtherMethods(Boolean) |
返回在元数据中使用 |
GetRaiseMethod() |
返回引发事件时所调用的方法。 |
GetRaiseMethod(Boolean) |
在派生类中重写时,返回引发事件时调用的方法,指定是否返回非公共方法。 |
GetRemoveMethod() |
返回用于从事件源删除事件处理程序委托的方法。 |
GetRemoveMethod(Boolean) |
在派生类中重写时,检索用于删除事件方法的 |
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 对象是否不相等。 |
显式接口实现
扩展方法
适用于
线程安全性
此类型是线程安全的。