【问题标题】:Other than Linq to SQL does anything else consume INotifyPropertyChanging?除了 Linq to SQL 之外,还有什么东西会消耗 INotifyPropertyChanging?
【发布时间】:2010-10-01 00:43:34
【问题描述】:

从未使用过INotifyPropertyChanging,我想知道除了 Linq to SQL 以外的其他东西是否使用它?

如果 Linq to SQL 是唯一的用户,为什么 INotifyPropertyChanging 存在于 System.ComponentModel 中?

http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanging.aspx

【问题讨论】:

  • 好吧,既然 LINQ to SQL 是 .NET 框架的一部分,那么它所依赖的任何东西都需要在那里......或者问题是,为什么它存在于 LINQ to SQL 程序集之外/命名空间?
  • 雷克斯。好点子。问题已更新
  • System.Dynamic.ExpandoObject 是另一个实现者。 System.Collections.ObjectModel.ObservableCollection<T>System.Configuration.ApplicationSettingsBase 等也是如此。
  • 柯克。我正在寻找接口而不是实现的消费者。

标签: .net linq-to-sql


【解决方案1】:

根据 Reflector ;) INotifyPropertyChanging 用于 Linq to SQL 及其第三方类似物(如 Devart.Data.Linq)来优化实体更改跟踪(延迟实体快照直到第一次更改)。

基本上,如果您加载 X 个对象,拥有的 DataContext 将创建这些对象的 X 个副本(快照),如果它们没有实现 INotifyPropertyChanging。

实施 INotifyPropertyChanging 后,只会创建 X 个 PropertyChangingEventHandler。但是,一旦第一次更改到来,DataContext 就会开始克隆。

因此,只有当您的类是 DataContext (Linq to Sql) 中的数据实体、大量加载且主要用于读取操作时,实现 INotifyPropertyChanging 才有意义。

我还希望在您的 Weaver 项目中看到对 INotifyPropertyChanging 的可选支持;)

【讨论】:

  • 我很欣赏这种情绪,这似乎是一个合乎逻辑的进展。但是,您希望在房产发生变化之前多久收到一次通知?你能给我一个场景吗?很高兴您将其作为功能请求提出code.google.com/p/notifypropertyweaver/issues/list 并在那里进行讨论
猜你喜欢
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2011-07-29
相关资源
最近更新 更多