【发布时间】:2011-01-04 17:11:45
【问题描述】:
为什么ReadOnlyObservableCollection.CollectionChanged 是受保护的而不是公开的(就像对应的ObservableCollection.CollectionChanged 一样)?
如果我无法访问CollectionChanged 事件,那么实现INotifyCollectionChanged 的集合有什么用?
【问题讨论】:
-
出于好奇,您为什么会期待只读集合 to 发生变化?那么它肯定不会是只读的吗?
-
反问:为什么我不期望 ObservableCollection 发生变化?如果什么都不会改变,观察它有什么用?好吧,这个系列肯定会发生变化,但我有只允许观察它的消费者。望而却步……
-
我最近也遇到了这个问题。基本上 ObservableCollection 没有正确实现 INotifyCollection 更改事件。为什么C#允许一个类限制访问接口事件而不是接口方法?
-
我必须投票支持这完全是精神错乱。如果您不能订阅 CollectionChanged 事件,为什么世界上还存在 ReadOnlyObservableCollection? WTF是重点?对于那些一直说只读集合永远不会改变的人,请认真思考您所说的话。
-
“只读”并不像某些人认为的那样意味着“不可变”。这只意味着只能通过这样的属性看到集合的代码不允许更改它。当代码通过基础集合添加或删除成员时,它确实可以更改。即使读者自己无法更改集合,他们仍然应该能够收到更改发生的通知。他们可能仍然需要自己响应变化。我想不出像在这种情况下那样限制 CollectionChanged 属性的正当理由。
标签: c# .net collections