我想观察Icollection对象的变化,因为我无法将对象的类型更改为observablecollection。如何实现?
mycollectionobserver = Observable.FromEventPattern<NotifyCollectionChangedEventArgs> (source.IcollectionItems, "CollectionChanged").Subscribe(OnItemsChanged);
答案 0 :(得分:2)
实际修改集合的代码是什么?您是否能够将自己的对象引用传递给该代码而不是对原始ICollection<T>
对象的引用?
如果第二个问题的答案是“否”,那么你就不走运了。但是如果可以用您自己的对象引用替换对象引用,那么您可以围绕自己实现ICollection<T>
的{{1}}对象实现一个包装器。通过这种方式,您自己的对象将能够看到对集合的每次修改并引发相应的INotifyCollectionChanged
事件。
如果你不能这样做,那么修改集合的代码无法使用你的自定义实现,并且总是能够修改集合,而无需你自己的代码知道它。
最后,请注意有人可能已经编写了这样的包装器。我没有找到任何快速谷歌搜索,但我没有尝试。如果确实存在,我不会感到惊讶。