/// <summary> /// 通知观察者合集即将进行清空; /// </summary> private void NotifyClear() { MapEvent <TKey> mapEvent = new MapEvent <TKey>() { Map = this, EventType = DictionaryEventType.Clear, }; observers.NotifyNext(mapEvent); }
/// <summary> /// 通知观察者合集即将进行加入操作; /// </summary> private void NotifyAdd(TKey key, MapNode newValue) { MapEvent <TKey> mapEvent = new MapEvent <TKey>() { Map = this, EventType = DictionaryEventType.Add, Key = key, NewValue = newValue, }; observers.NotifyNext(mapEvent); }
/// <summary> /// 通知观察者合集即将进行加入操作; /// </summary> private void NotifyRemove(TKey key, MapNode originalValue) { MapEvent <TKey> mapEvent = new MapEvent <TKey>() { Map = this, EventType = DictionaryEventType.Remove, Key = key, OriginalValue = originalValue, }; observers.NotifyNext(mapEvent); }
void IObserver <MapEvent <TKey> > .OnNext(MapEvent <TKey> value) { switch (value.EventType) { case DictionaryEventType.Add: OnAdd(value.Key); break; case DictionaryEventType.Remove: OnRemove(value.Key); break; case DictionaryEventType.Update: OnUpdate(value.Key); break; } }
/// <summary> /// 通知观察者合集即将进行更新操作; /// </summary> private void NotifyUpdate(TKey key, MapNode originalValue, MapNode newValue) { var changeContents = MapNode.GetNodeChangeElements(originalValue, newValue); if (changeContents > 0) { MapEvent <TKey> mapEvent = new MapEvent <TKey>() { Map = this, EventType = DictionaryEventType.Update, Key = key, OriginalValue = originalValue, NewValue = newValue, ChangeContents = changeContents, }; observers.NotifyNext(mapEvent); } }