private void AddedToOuter(int outerIndex, ReadOnlyObservableCollection <T> inner) { var handler = inner?.AddChangeHandlers <ReadOnlyObservableCollection <T>, T>( (index, item) => this.AddedToInner(inner, index, item), (index, item) => this.RemovedFromInner(inner, index), () => this.ClearedInner(inner)); this.unsubscribeCallbacks.Insert(outerIndex, () => Unsubscribe(inner, handler)); }
internal FilterCollection( ReadOnlyObservableCollection <T> originalItems, Predicate <T> predicate, IComparer <T> comparer) { this.predicate = predicate ?? throw new ArgumentNullException(nameof(predicate)); this.comparer = comparer; var handler = originalItems.AddChangeHandlers <ReadOnlyObservableCollection <T>, T>( this.InsertIfMatch, this.Remove, this.Clear); this.RegisterForRemoval(originalItems, handler); }