刚才看了Artech的也谈事件的文章,文章地址:http://www.cnblogs.com/artech/archive/2010/07/10/1774833.html,他在这篇文章中讲到了MulticastDelegate 类,他说事件本质上是一个MulticastDelegate对象,由此我想到使用MulticastDelegate 类来获取一个事件被注册的次数,下面是我写的一个测试类来测试MulticastDelegate 能否来获取事件被注册的次数,结果是可以获取的,代码如下:

class Program
{
static void Main(string[] args)
{
EventCountTest a = new EventCountTest();
a.Print += new EventHandler(Event1);
a.Print += new EventHandler(Event2);
a.Print += new EventHandler(Event2);
//调用次方法将触发事件
a.Invok();
}
static void Event1(object sender, EventArgs e)
{
Console.WriteLine("Event1");
}
static void Event2(object sender, EventArgs e)
{
Console.WriteLine("Event2");
}
static void Event3(object sender, EventArgs e)
{
Console.WriteLine("Event3");
}
}
/// <summary>
/// 定义一个用来测试事件被注册次数的类
/// </summary>
public class EventCountTest
{
public event EventHandler Print;
//模拟事件被调用
public void Invok()
{
if (Print != null)
{
//打印事件被注册的次数
Console.WriteLine((Print as MulticastDelegate).GetInvocationList().Count().ToString());
Print(this,new EventArgs());
}
}
}
有一点要注意的是,只能在类内部获取该事件被注册的次数
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架