假设我已经宣布
public event EventArgs<SyslogMessageEventArgs> MessageReceived;
public int SubscribedClients
{
get [...]
}
我想数一数我的班级有多少“订阅客户”。我需要将那些通过网络订阅的API(没有显示在片段中)加(做channel.MessageReceived+=myMethod;
的API)加起来。
我知道C#事件可以使用add
和remove
语句显式声明,在那里我肯定可以将+或-1计数到本地计数器,但我从未在C#中为显式事件编写代码,因此我不知道在添加和删除计数器上执行哪些操作,而不是更新计数器。
谢谢。
发布于 2010-10-30 04:29:46
您可以使用GetInvocationList()
MessageReceived?.GetInvocationList().Length
发布于 2021-12-30 00:14:59
class A
{
public event EventArgs<SyslogMessageEventArgs> MessageReceived;
public int SubscribedClients
{
get {
return (MessageReceived == null)
? 0
: MessageReceived.GetInvocationList().Length
;
}
}
}
void Main()
{
A a = new A();
if(a.SubscribedClients == 0)
{
a.MessageReceived += ...;
}
}
https://stackoverflow.com/questions/4058667
复制相似问题