我一直在以千篇一律的方式使用以下一些代码,跨越几十个类
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响应性一直存在性能问题 - 主要是由于大量控件。所以我希望尽可能地减肥。有什么想法吗?
答案 0 :(得分:5)
这是WPF或Silverlight开发中非常常见的基类,不会显着影响性能。我将PropertyNotifier
作为基类的唯一问题是限制为单一继承,但这对于您需要它的类的类型来说往往是一个罕见的问题。
答案 1 :(得分:3)
是的,这是非常常见的做法。对于大规模的应用程序,有必要拥有这种基类。为了同样的目的,我们还创建了BaseViewModel
;我们还在这个基类中实现了许多通用代码(跨ViewModels),如日志记录,显示错误消息,初始化WCF代理对象等。
答案 2 :(得分:2)
另一个实现是 WPF Application Framework (WAF) 的模型类。它完全一样。