C# 从实现INotifyPropertyChanged的一个基类继承
我已经在几十个类中以一种千篇一律的方式使用了以下代码C# 从实现INotifyPropertyChanged的一个基类继承,c#,.net,wpf,mvvm,inotifypropertychanged,C#,.net,Wpf,Mvvm,Inotifypropertychanged,我已经在几十个类中以一种千篇一律的方式使用了以下代码 public event PropertyChangedEventHandler PropertyChanged; protected void NotifyPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyNa
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
所有这些类都实现了INotifyPropertyChanged
。为了消除我的枯燥警报,最近我一直在重构这些类,以继承我的基类PropertyNotifier
,它的唯一目的是为继承自它的类提供NotifyPropertyChanged
,这些类是我庞大项目中的几十个ViewModel
类
感觉很懒,有点脏。我是在损害性能还是破坏良好的设计实践?我想,如果更改通知应该这么简单,那么WPF框架中就会有一个基类,它可以完成我的PropertyNotifier
类所做的事情
请注意,由于很多原因,我的UI响应性一直存在性能问题——主要是由于大量的控件。所以我希望尽我所能修剪脂肪。有什么想法吗?这是WPF或Silverlight开发中非常常见的基类,不会明显影响性能。作为基类,
PropertyNotifier
的唯一问题是被限制为单一继承,但对于需要它的类类型来说,这往往是一个罕见的问题。是的,这是非常常见的做法。对于大型应用程序,有必要具有这种基类。为了同样的目的,我们还创建了一个BaseViewModel
;我们还在这个基类中实现了许多常见代码(跨ViewModels),如日志记录、显示错误消息、初始化WCF代理对象等。另一个实现是的模型类。这完全是一样的。谢谢你的安慰:DI知道人们在使用它们,但我意外地得到了类似的BaseViewModel。在WPF和实体框架之间放置一个基本VM类真的很好。这为我节省了大量的工作。我使用我的主要功能是从EF ObjectSet生成一个ObservableCollection,并跟踪添加/删除新的Ts和SelectedItem T,以及属性通知—您指出的初始化、代理对象等—发布此jbe的方法,这看起来是一个很棒的框架。好像我重新发明了轮子!