基类实现INotifyPropertyChanged:派生类型可以使用其PropertyChanged事件吗?

时间:2013-10-22 15:21:45

标签: c# refactoring inotifypropertychanged

修改

从海报提示中,我在MSDN上找到了以下有用的链接:

How to: Raise Base Class Events in Derived Classes (C# Programming Guide)

Derived classes cannot raise base class events


在重构的过程中,我遇到了一个有趣的问题,到目前为止我还没有找到答案:

重构包括创建一个实现abstract的{​​{1}}基类,派生类型将使用它而不是自己实现接口。

派生类型可以使用基类事件INotifyPropertyChanged,还是必须覆盖它,如下所示?

如果他们必须PropertyChanged,你可以解释为什么它应该是这样的原因吗?

(注意:Resharper建议重构)

override

1 个答案:

答案 0 :(得分:5)

我不认为他们必须覆盖。

基本类型可以定义

  

protected void RaisePropertyChanged(string propertyName);

派生类只能调用基本方法来触发属性通知。

刚刚找到一些支持证据: MSDN page on implementing INotifyPropertyChanged

当然,您的基本类型可以添加更多好东西

  • 就像每个唯一属性名称只创建一个事件args实例(少了垃圾对象)
  • 通过CallerMemberName
  • 推断属性的名称
  • 使用lambda表达式来标记不正确的属性名称