相关疑难解决方法(0)

自动创建空的C#事件处理程序

无法在没有附加处理程序的C#中触发事件.因此,在每次调用之前,有必要检查事件是否为空.

if ( MyEvent != null ) {
  MyEvent( param1, param2 );
}
Run Code Online (Sandbox Code Playgroud)

我想保持我的代码尽可能干净,并摆脱那些空检查.我不认为这会影响性能,至少在我的情况下不会.

MyEvent( param1, param2 );
Run Code Online (Sandbox Code Playgroud)

现在我通过手动为每个事件添加一个空的内联处理程序来解决这个问题.这很容易出错,因为我需要记住这样做等等.

void Initialize() {
  MyEvent += new MyEvent( (p1,p2) => { } );
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用反射和一些CLR魔法自动为给定类的所有事件生成空处理程序?

c# clr events delegates

68
推荐指数
5
解决办法
5万
查看次数

标签 统计

c# ×1

clr ×1

delegates ×1

events ×1