private void ProcessEntity(IEntity entity) { var isApplicable = ShouldTransform(entity); if (!isApplicable) { if (!FilteredCache.ContainsKey(entity.Id)) { return; } RemoveEntity(entity.Id); return; } var transformedData = Transform(entity); if (FilteredCache.ContainsKey(entity.Id)) { ChangeEntity(entity.Id, transformedData); return; } AddEntity(entity.Id, transformedData); }
private void AddEntity(int entityId, T transformedData) { FilteredCache.Add(entityId, transformedData); _onElementAdded.OnNext(new CollectionElementChangedEvent <T> { Index = entityId, OldValue = default(T), NewValue = transformedData }); }
private void RemoveEntity(int entityId) { var currentValue = FilteredCache[entityId]; FilteredCache.Remove(entityId); _onElementRemoved.OnNext(new CollectionElementChangedEvent <T> { Index = entityId, OldValue = currentValue, NewValue = default(T) }); }