【发布时间】:2010-09-25 07:58:39
【问题描述】:
不可能在 C# 中触发没有附加处理程序的事件。所以每次调用前都要检查事件是否为空。
if ( MyEvent != null ) {
MyEvent( param1, param2 );
}
我想让我的代码尽可能干净,并摆脱那些空检查。我认为它不会对性能产生太大影响,至少对我而言不会。
MyEvent( param1, param2 );
现在我通过手动为每个事件添加一个空的内联处理程序来解决这个问题。这很容易出错,因为我需要记住这样做等等。
void Initialize() {
MyEvent += new MyEvent( (p1,p2) => { } );
}
有没有办法使用反射和一些 CLR 魔法自动为给定类的所有事件生成空处理程序?
【问题讨论】:
-
接受答案中的技巧将避免检查 null 但不能确保线程安全。看这里:stackoverflow.com/questions/1131184/…