从一个实现INotifyPropertyChanged的基类继承

时间:2010-09-22 15:21:26

标签: c# .net wpf mvvm inotifypropertychanged

我一直在以千篇一律的方式使用以下一些代码,跨越几十个类

public event PropertyChangedEventHandler PropertyChanged;

protected void NotifyPropertyChanged(string propertyName)
{
   if (PropertyChanged != null)
   {
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
   }
}

所有这些类都实现了INotifyPropertyChanged。为了使我的DRY警报静音,最近我一直在重构这些类来继承我的基类PropertyNotifier,它的唯一目的是为从它继承的类提供NotifyPropertyChanged - 这是几十个ViewModel我的庞大项目中的1}}类。

感觉很懒,有点脏。我是在损害性能还是破坏了良好的设计实践?我想如果改变通知应该很容易,那么WPF框架中就会有一个基类来完成我的PropertyNotifier类所做的事情。

请注意,由于很多原因,我的UI响应性一直存在性能问题 - 主要是由于大量控件。所以我希望尽可能地减肥。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

这是WPF或Silverlight开发中非常常见的基类,不会显着影响性能。我将PropertyNotifier作为基类的唯一问题是限制为单一继承,但这对于您需要它的类的类型来说往往是一个罕见的问题。

答案 1 :(得分:3)

是的,这是非常常见的做法。对于大规模的应用程序,有必要拥有这种基类。为了同样的目的,我们还创建了BaseViewModel;我们还在这个基类中实现了许多通用代码(跨ViewModels),如日志记录,显示错误消息,初始化WCF代理对象等。

答案 2 :(得分:2)

另一个实现是 WPF Application Framework (WAF) 模型类。它完全一样。