如何在C#中跟踪活动的订阅者?
是否有一些隐藏的类属性可以知道这一点?如果您可以访问实际的委托(如果您使用速记如何在C#中跟踪活动的订阅者?,c#,.net,events,event-handling,C#,.net,Events,Event Handling,是否有一些隐藏的类属性可以知道这一点?如果您可以访问实际的委托(如果您使用速记事件语法,那么这只在实际的声明类中,因为委托是私有的),那么您可以调用 例如: public event EventHandler MyEvent; 要获取订阅者列表,您可以拨打: Delegate[] subscribers = MyEvent.GetInvocationList(); 然后,如有必要,您可以检查订阅方数组的每个元素的方法和目标属性 这样做之所以有效,是因为像上面那样声明事件实际上做了类似的事情:
事件
语法,那么这只在实际的声明类中,因为委托是私有的
),那么您可以调用
例如:
public event EventHandler MyEvent;
要获取订阅者列表,您可以拨打:
Delegate[] subscribers = MyEvent.GetInvocationList();
然后,如有必要,您可以检查订阅方
数组的每个元素的方法
和目标
属性
这样做之所以有效,是因为像上面那样声明事件实际上做了类似的事情:
private EventHandler myEventDelegate;
public event EventHandler MyEvent
{
add { myEventDelegate += value; }
remove { myEventDelegate -= value; }
}
这就是为什么从声明类中查看事件时,与其他任何地方(包括从其继承的类)相比,事件看起来有所不同。唯一面向公众的界面是添加
和删除
功能;实际的委托(即保存订阅的委托)是private