按照规范,我们写一个包含事件的类应该这样(以PropertyChanged事件为例):

 PropertyChanged)
        {
            PropertyChanged (sender, e);
        }
    }
}

这里OnPropertyChanged方法的作用是确保当没有人订阅事件时,不会调用一个空的委托而引发异常,并且实现了对派生类重写事件处理的支持。

然而,很多时候对于一些简单类型,比如上面这样一个贫血类型,根本不会有复杂的继承体系,这时,我们可以这样简化:

 

 { };
}

通过对PropertyChanged事件委托赋初值,保证了它不会是一个空的委托,因而可以放心调用。同时我也将这个类声明为sealed,保证其不会被继承。

 

这样写是不是简单很多?免去了无趣地写一个个OnEvent方法。但这只是个偷懒,而且不是个怎么好的偷懒,因为它会导致编程习惯的不一致,只有当你确定你写的类足够简单而且不会被继承时,才可以使用。

PS: 这个Trick我是从微软的P&P小组的代码中学来的。

相关文章:

  • 2022-12-23
  • 2021-06-07
  • 2022-02-05
  • 2021-04-04
  • 2021-04-29
  • 2021-05-12
  • 2022-01-14
  • 2021-05-10
猜你喜欢
  • 2021-05-21
  • 2022-01-27
  • 2021-04-29
  • 2021-05-20
  • 2021-12-06
  • 2021-06-10
  • 2021-09-13
相关资源
相似解决方案