如何计算有多少听众被吸引到一个事件?

usr*_*ΛΩΝ 35 c# events

假设我已经宣布了

public event EventArgs<SyslogMessageEventArgs> MessageReceived;

public int SubscribedClients
{
    get [...]
}
Run Code Online (Sandbox Code Playgroud)

我想算一下我班上有多少"订阅的客户".我需要通过我的API(未在片段中显示)加上那些通过网络订阅的那些加上那些channel.MessageReceived+=myMethod;.

我知道C#的事件可以明确地声明add,并remove声明,在那里我可以肯定算+或-1到本地计数器,但我从来没有写过在C#中明确事件的代码,所以我不知道到底是什么更多的执行添加和删​​除而不是更新计数器.

谢谢.

And*_*rey 69

MessageReceived?.GetInvocationList().Length
Run Code Online (Sandbox Code Playgroud)

  • 你最好添加一个空测试. (20认同)
  • 如果使用空委托初始化事件,则无需执行空测试.但是,计数长度为1. public event EventArgs <SyslogMessageEventArgs> MessageReceived = delegate {}; (3认同)
  • @darkpbj 我的答案是在 2019 年编辑的:-D 所以看起来评论不合时宜。 (2认同)