Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否仅为表示层更改InotifyProperty?_.net_Wpf - Fatal编程技术网

.net 是否仅为表示层更改InotifyProperty?

.net 是否仅为表示层更改InotifyProperty?,.net,wpf,.net,Wpf,INotifyPropertyChanged显然在视图模型中非常有用,可以将数据绑定到视图。当我需要属性更改通知时,我是否应该在应用程序的其他部分(例如业务层)中使用此接口,或者我最好使用其他通知机制?我意识到没有什么可以阻止我使用它,但是有什么理由我不应该使用它吗?INotifyPropertyChanged不是很明确,而且很容易出错,因为您需要通过字符串指定更改的属性,当您将所述属性重构为其他名称时,可能会成为过时信息。如果是您的类使用了一些通知,我认为更明确地说明它并说明更改的内容会更有意

INotifyPropertyChanged显然在视图模型中非常有用,可以将数据绑定到视图。当我需要属性更改通知时,我是否应该在应用程序的其他部分(例如业务层)中使用此接口,或者我最好使用其他通知机制?我意识到没有什么可以阻止我使用它,但是有什么理由我不应该使用它吗?

INotifyPropertyChanged不是很明确,而且很容易出错,因为您需要通过字符串指定更改的属性,当您将所述属性重构为其他名称时,可能会成为过时信息。如果是您的类使用了一些通知,我认为更明确地说明它并说明更改的内容会更有意义。

INotifyPropertyChanged的实现可能有点困难,尽管有一些工具可以使它更简洁、更不容易出错(例如,PostSharp可以自动设置setter通知程序的管道,这样您就不必手动对其进行编码(setter中不再有字符串引用),并且像Resharper这样的工具可以执行重命名,以更新对属性名称的字符串引用。)

我个人确实在我的模型层中实现了这个接口,尽管它不会被其他模型对象占用太多。大多数情况下,我的模型对象通常不会监听单个属性的更改;相反,他们正在监视可能涉及多个属性的整体状态更改。这种更改最好不要但是,我发现自己在使用InotifyCollection时发生了很大的变化,公开了公共ObservableCollection类中的对象集合并响应更改事件,而不是创建一堆包装器方法来访问私有集合和更新状态