INotifycollection изменилось на объекте ICollection<T>

Я хочу наблюдать за изменениями в объекте Icollection, учитывая, что я не могу изменить тип объекта на observablecollection. Как это может быть достигнуто?

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

1 ответ

Решение

Какой код на самом деле изменяет коллекцию? Можете ли вы передать собственную ссылку на объект в этот код вместо ссылки на оригинал? ICollection<T> объект?

Если ответ на этот второй вопрос "нет", то вам не повезло. Но если вы можете заменить ссылку на объект своей собственной, то вы можете реализовать обертку вокруг ICollection<T> объект, который сам реализует INotifyCollectionChanged, Таким образом, ваш собственный объект сможет увидеть каждую модификацию коллекции и поднять соответствующую INotifyCollectionChanged События.

Если вы не можете этого сделать, то код, модифицирующий коллекцию, не сможет использовать вашу пользовательскую реализацию и всегда сможет изменить коллекцию, не имея своего собственного кода, который бы знал об этом.

Наконец, обратите внимание, что кто-то, возможно, уже написал такую ​​обертку. Я ничего не нашел с помощью быстрого поиска в Google, но я не очень старался. Я не удивлюсь, если таковой существует.

Другие вопросы по тегам