在C#中,可以使用 GetInvocationList()
方法来获取事件已经注册了哪些方法。该方法返回一个Delegate
类型的数组,包含了所有已注册的方法。
下面是一个示例代码:
using System;
class Program
{
static void Main(string[] args)
{
MyEventClass myEventClass = new MyEventClass();
myEventClass.MyEvent += Method1;
myEventClass.MyEvent += Method2;
// 事件“MyEventClass.MyEvent”只能出现在 += 或 -= 的左边(从类型“MyEventClass”中使用时除外)
Delegate[] eventHandlers = myEventClass.MyEvent.GetInvocationList();
// 所以,只能在声明事件的类里定义一个函数来获取
Delegate[] eventHandlers = myEventClass.GetEventDelegates();
foreach (Delegate handler in eventHandlers)
{
Console.WriteLine(handler.Method.Name);
}
}
static void Method1()
{
Console.WriteLine("Method1");
}
static void Method2()
{
Console.WriteLine("Method2