[英]How can I track subscribers to an event in C#?
是否有一些隱藏的類屬性可以讓我知道這個?
如果您有權訪問實際的委托(如果您使用的是速記event
語法,那么這只是在實際的聲明類中,因為委托是private
),那么您可以調用GetInvocationList()
。
例如:
public event EventHandler MyEvent;
要獲取訂閱者列表,您可以致電:
Delegate[] subscribers = MyEvent.GetInvocationList();
然后,您可以根據需要檢查subscribers
數組的每個元素的Method
和Target
屬性。
這樣做的原因是因為我們上面所做的事件聲明事件實際上做了類似於此的事情:
private EventHandler myEventDelegate;
public event EventHandler MyEvent
{
add { myEventDelegate += value; }
remove { myEventDelegate -= value; }
}
這就是從聲明類中查看事件與其他任何地方(包括從中繼承的類)相比,事件看起來不同的原因。 唯一面向公眾的界面是add
和remove
功能; 實際的委托是持有訂閱的,是private
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.