INotifycollection изменилось на объекте ICollection<T>
Я хочу наблюдать за изменениями в объекте Icollection, учитывая, что я не могу изменить тип объекта на observablecollection. Как это может быть достигнуто?
mycollectionobserver = Observable.FromEventPattern<NotifyCollectionChangedEventArgs> (source.IcollectionItems, "CollectionChanged").Subscribe(OnItemsChanged);
1 ответ
Какой код на самом деле изменяет коллекцию? Можете ли вы передать собственную ссылку на объект в этот код вместо ссылки на оригинал? ICollection<T>
объект?
Если ответ на этот второй вопрос "нет", то вам не повезло. Но если вы можете заменить ссылку на объект своей собственной, то вы можете реализовать обертку вокруг ICollection<T>
объект, который сам реализует INotifyCollectionChanged
, Таким образом, ваш собственный объект сможет увидеть каждую модификацию коллекции и поднять соответствующую INotifyCollectionChanged
События.
Если вы не можете этого сделать, то код, модифицирующий коллекцию, не сможет использовать вашу пользовательскую реализацию и всегда сможет изменить коллекцию, не имея своего собственного кода, который бы знал об этом.
Наконец, обратите внимание, что кто-то, возможно, уже написал такую обертку. Я ничего не нашел с помощью быстрого поиска в Google, но я не очень старался. Я не удивлюсь, если таковой существует.