ICollection<T> 对象上的 INotifycollectionchanged
INotifycollectionchanged on ICollection<T> object
我想观察 Icollection 对象的变化,因为我无法将对象的类型更改为 observablecollection.How 可以实现吗?
mycollectionobserver = Observable.FromEventPattern<NotifyCollectionChangedEventArgs> (source.IcollectionItems, "CollectionChanged").Subscribe(OnItemsChanged);
实际上修改集合的代码是什么?您能否将自己的对象引用传递给该代码,而不是传递给原始 ICollection<T>
对象的引用?
如果第二个问题的答案是 "no",那你就不走运了。但是,如果您 可以 将对象引用替换为您自己的对象引用,那么您可以围绕本身实现 INotifyCollectionChanged
的 ICollection<T>
对象实现一个包装器。这样,您自己的对象将能够看到对集合的每个修改并引发适当的 INotifyCollectionChanged
事件。
如果您不能这样做,那么修改集合的代码将无法使用您的自定义实现,并且始终能够在您自己的代码无法知道的情况下修改集合。
最后,请注意,有人可能已经编写了这样的包装器。我没有通过快速 Google 搜索找到任何东西,但我并没有很努力地尝试。如果确实存在,我不会感到惊讶。
我想观察 Icollection 对象的变化,因为我无法将对象的类型更改为 observablecollection.How 可以实现吗?
mycollectionobserver = Observable.FromEventPattern<NotifyCollectionChangedEventArgs> (source.IcollectionItems, "CollectionChanged").Subscribe(OnItemsChanged);
实际上修改集合的代码是什么?您能否将自己的对象引用传递给该代码,而不是传递给原始 ICollection<T>
对象的引用?
如果第二个问题的答案是 "no",那你就不走运了。但是,如果您 可以 将对象引用替换为您自己的对象引用,那么您可以围绕本身实现 INotifyCollectionChanged
的 ICollection<T>
对象实现一个包装器。这样,您自己的对象将能够看到对集合的每个修改并引发适当的 INotifyCollectionChanged
事件。
如果您不能这样做,那么修改集合的代码将无法使用您的自定义实现,并且始终能够在您自己的代码无法知道的情况下修改集合。
最后,请注意,有人可能已经编写了这样的包装器。我没有通过快速 Google 搜索找到任何东西,但我并没有很努力地尝试。如果确实存在,我不会感到惊讶。