Beispiel #1
0
        /// <summary>
        /// 通知观察者合集即将进行清空;
        /// </summary>
        private void NotifyClear()
        {
            MapEvent <TKey> mapEvent = new MapEvent <TKey>()
            {
                Map       = this,
                EventType = DictionaryEventType.Clear,
            };

            observers.NotifyNext(mapEvent);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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;
            }
        }
Beispiel #5
0
        /// <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);
            }
        }