Exemple #1
0
        /// <inheritdoc />
        public void StopObserving(TKey id, ObservableUpdateType updateType, Action <TValue> onUpdate)
        {
            switch (updateType)
            {
            case ObservableUpdateType.Added:
                if (_onAddActions.TryGetValue(id, out var addList))
                {
                    addList.Remove(onUpdate);
                }
                break;

            case ObservableUpdateType.Updated:
                if (_onUpdateActions.TryGetValue(id, out var updateList))
                {
                    updateList.Remove(onUpdate);
                }
                break;

            case ObservableUpdateType.Removed:
                if (_onRemoveActions.TryGetValue(id, out var removeList))
                {
                    removeList.Remove(onUpdate);
                }
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(updateType), updateType, "Wrong update type");
            }
        }
Exemple #2
0
        /// <inheritdoc />
        public void Observe(TKey id, ObservableUpdateType updateType, Action <TValue> onUpdate)
        {
            switch (updateType)
            {
            case ObservableUpdateType.Added:
                if (!_onAddActions.TryGetValue(id, out var addList))
                {
                    addList = new List <Action <TValue> >();

                    _onAddActions.Add(id, addList);
                }

                addList.Add(onUpdate);
                break;

            case ObservableUpdateType.Updated:
                if (!_onUpdateActions.TryGetValue(id, out var updateList))
                {
                    updateList = new List <Action <TValue> >();

                    _onUpdateActions.Add(id, updateList);
                }

                updateList.Add(onUpdate);
                break;

            case ObservableUpdateType.Removed:
                if (!_onRemoveActions.TryGetValue(id, out var removeList))
                {
                    removeList = new List <Action <TValue> >();

                    _onRemoveActions.Add(id, removeList);
                }

                removeList.Add(onUpdate);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(updateType), updateType, "Wrong update type");
            }
        }
Exemple #3
0
 /// <inheritdoc />
 public void StopObserving(ObservableUpdateType updateType, Action <TValue> onUpdate)
 {
     _genericUpdateActions[(int)updateType].Remove(onUpdate);
 }
Exemple #4
0
 /// <inheritdoc />
 public void Observe(ObservableUpdateType updateType, Action <TValue> onUpdate)
 {
     _genericUpdateActions[(int)updateType].Add(onUpdate);
 }
Exemple #5
0
        /// <inheritdoc />
        public void InvokeObserve(TKey id, ObservableUpdateType updateType, Action <TValue> onUpdate)
        {
            onUpdate(_list[FindIndex(id)]);

            Observe(id, updateType, onUpdate);
        }