Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从事件获取事件处理程序?_C#_.net_Events_Delegates - Fatal编程技术网

C# 从事件获取事件处理程序?

C# 从事件获取事件处理程序?,c#,.net,events,delegates,C#,.net,Events,Delegates,可能重复: 有没有办法从事件中获取事件处理程序的引用 例如: EventHandler evt = btn.Click; // or another way ? (此处,EventHandler是委托,单击是按钮的事件)如果定义了事件,并且访问该事件的代码在同一类中(即未派生),则可以访问该事件并获取调用列表 MulticastDelegate m = (MulticastDelegate)MyEvent; var list = m.GetInvocationList(); fo

可能重复:

有没有办法从事件中获取事件处理程序的引用

例如:

EventHandler evt = btn.Click; // or another way ?

(此处,
EventHandler
是委托,
单击
是按钮的事件)

如果定义了事件,并且访问该事件的代码在同一类中(即未派生),则可以访问该事件并获取调用列表

MulticastDelegate m = (MulticastDelegate)MyEvent;  

var list = m.GetInvocationList();  

foreach(Delegate d in list)  
{  
    // look at the delegate
}  
对于要访问在类中定义的事件的调用列表的情况,您无法修改该类的代码


您可以尝试使用此代码-只需
铸造

var result = (EventHandler)control.Click;
Console.WriteLine(result.Method.Name);

只是想知道您想要实现什么?…事件只实现添加和删除访问器块,如get和set only different。因此,事件不存在“get”。从汉斯那里找到了答案Passant@user125697我在建议的副本中找到了答案。请看汉斯·帕桑的答案。