コード例 #1
0
        public void OnNext(ObservableEvent <T> value)
        {
            switch (value)
            {
            case AddedObservableEvent <T> addedObservableEvent:
                Add(addedObservableEvent.Value);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(value));
            }
        }
コード例 #2
0
 private void Publish(ObservableEvent <T> @event)
 {
     for (int index = 0; index < _observers.Count; index++)
     {
         try
         {
             _observers[index].OnNext(@event);
         }
         catch
         {
             // ignore
         }
     }
 }
コード例 #3
0
 private void Publish(ObservableEvent <TValue> @event)
 {
     lock (_observers)
     {
         for (var index = 0; index < _observers.Count; index++)
         {
             try
             {
                 _observers[index].OnNext(@event);
             }
             catch
             {
                 // ignore
             }
         }
     }
 }
コード例 #4
0
 private void Publish(ObservableEvent <TValue> @event)
 {
     using (_observersLock.ReadLock())
     {
         foreach (var observer in _observers)
         {
             try
             {
                 observer.OnNext(@event);
             }
             catch
             {
                 // ignore
             }
         }
     }
 }
コード例 #5
0
        public void OnNext(ObservableEvent <TValue> value)
        {
            switch (value)
            {
            case AddedObservableEvent addedObservableEvent:
                Add(addedObservableEvent.Key, addedObservableEvent.Value);
                break;

            case RemovedObservableEvent removedObservableEvent:
                Remove(removedObservableEvent.Key);
                break;

            case ReplacedObservableEvent replacedObservableEvent:
                this[replacedObservableEvent.Key] = replacedObservableEvent.Value;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(value));
            }
        }
コード例 #6
0
        public void OnNext(ObservableEvent <T> value)
        {
            switch (value)
            {
            case AddedObservableEvent addedObservableEvent:
                Add(addedObservableEvent.Value);
                break;

            case RemovedObservableEvent removedObservableEvent when !removedObservableEvent.Index.HasValue:
                Remove(removedObservableEvent.Value);
                break;

            case RemovedObservableEvent removedObservableEvent when removedObservableEvent.Index.HasValue:
                RemoveAt(removedObservableEvent.Index.Value);
                break;

            case ReplacedObservableEvent replacedObservableEvent:
                this[replacedObservableEvent.Index] = replacedObservableEvent.Value;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(value));
            }
        }