ICollection <t>对象</t>上的INotifycollectionchanged

时间:2015-02-19 09:12:19

标签: c# system.reactive observer-pattern inotifycollectionchanged

我想观察Icollection对象的变化,因为我无法将对象的类型更改为observablecollection。如何实现?

mycollectionobserver = Observable.FromEventPattern<NotifyCollectionChangedEventArgs>  (source.IcollectionItems, "CollectionChanged").Subscribe(OnItemsChanged);

1 个答案:

答案 0 :(得分:2)

实际修改集合的代码是什么?您是否能够将自己的对象引用传递给该代码而不是对原始ICollection<T>对象的引用?

如果第二个问题的答案是“否”,那么你就不走运了。但是如果可以用您自己的对象引用替换对象引用,那么您可以围绕自己实现ICollection<T>的{​​{1}}对象实现一个包装器。通过这种方式,您自己的对象将能够看到对集合的每次修改并引发相应的INotifyCollectionChanged事件。

如果你不能这样做,那么修改集合的代码无法使用你的自定义实现,并且总是能够修改集合,而无需你自己的代码知道它。

最后,请注意有人可能已经编写了这样的包装器。我没有找到任何快速谷歌搜索,但我没有尝试。如果确实存在,我不会感到惊讶。