对于视图的数据绑定,INotifyPropertyChanged显然在视图模型中非常有用。当我想要更改属性通知时,我是否还应该在我的应用程序的其他部分(例如在业务层)中使用此接口,或者我最好使用其他通知机制?我意识到没有什么可以阻止我使用它,但有什么理由我不应该这样做吗?
答案 0 :(得分:1)
INotifyPropertyChanged
不是非常明确且容易出错,因为您需要通过字符串指定更改的属性,当您将所述属性重构为其他名称时,可能会成为陈旧信息。如果您的班级消耗了一些通知,我认为更明确地了解它并说明会发生什么变化。
答案 1 :(得分:0)
INotifyPropertyChanged可能有点难以实现,尽管有些工具可以使它更清晰且更不容易出错(例如,PostSharp可以自动化setter通知程序的管道,因此您不必编写它们手动(setter中不再有字符串引用)和Resharper之类的工具可以执行重命名,同时更新对属性名称的字符串引用。)
我个人确实在我的Model层中实现了这个接口,尽管它并没有被其他Model对象消耗得那么多。大多数情况下,我的Model对象通常不会监听单个属性更改;相反,他们正在关注可能涉及多个房产的整体状态变化。通过特定事件可以更好地通知此类更改。但是,我发现自己使用了很多INotifyCollectionChanged,在公共ObservableCollection类中公开对象集合并响应更改事件,而不是创建一堆包装器方法来访问私有集合和更新状态。