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我在建议的副本中找到了答案。请看汉斯·帕桑的答案。