除了数据绑定之外,.NET Framework 中是否使用 INotifyPropertyChanging / Changed?

StackOverflow https://stackoverflow.com/questions/997266

  •  13-09-2019
  •  | 
  •  

例如,如果您有一个 BindingList<Person> 并将其绑定到一个控件,则如果您的 Person 类没有实现 INotfiyPropertyChanging / Changed,您对基础 List 的更改将不会自动显示在您的控件中。我的问题是,就框架而言,这些接口还有其他用途吗?我不是在谈论使用这些接口来实现基于这些事件的您自己的操作,我是在谈论在 .NET Framework 本身中,是否还需要实现这些接口?

有帮助吗?

解决方案

我不能 100% 自信地说,但由于您没有任何其他答案,而且我自己也很感兴趣,所以我刚刚启动 Reflector 并检查哪些类依赖于 INotifyPropertyChanged,简短的答案似乎是:不,它并没有真正用于其他任何用途。

查看这些类,一些非数据绑定引用是:

  • System.Configuration.ApplicationSettingsBase - 因此,如果您决定实现自己的应用程序设置提供程序,那么它应该公开 INPC 功能。因此,它在数据绑定之外的某个领域也有使用,但范围非常狭窄。

  • System.Printing.PrintTicket 还实现了 INPC。我没有通过 .NET 进行大量打印,因此这可能很重要,也可能不重要。我实在说不上来。

因此,更全面地回答这个问题:如果您不是数据绑定,我怀疑您会发现让您的类实现 INotifyPropertyChanged 有任何好处,有一些边缘情况,该接口在 DataBinding 上下文之外使用,但如果您在这些领域工作,您很快就会发现自己找出来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top