-1

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

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

1 回答 1

2

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

如果第二个问题的答案是“否”,那么你就不走运了。但是,如果您可以用自己的对象引用替换对象引用,那么您可以在ICollection<T>对象本身实现的对象周围实现一个包装器INotifyCollectionChanged。这样,您自己的对象将能够看到对集合的每一次修改并引发适当的INotifyCollectionChanged事件。

如果您不能这样做,那么修改集合的代码将无法使用您的自定义实现,并且始终能够在您自己的代码无法了解它的情况下修改集合。

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

于 2015-02-19T23:38:53.577 回答