Exemple #1
0
        /// <summary>
        /// Subscribe to value changes. Changing internal values for wrapped complex objects, won't trigger the callback.
        /// The OnNext is also called imediately after you subscribe, to provide the current value.
        /// </summary>
        /// <param name="callback">The object that will listen for changes, implemeting IObserver<T></param>
        /// <returns>A subscription reference</returns>
        public IDisposable Subscribe(ValueProviderCallback <T> callback)
        {
            if (_callbacks.IndexOf(callback) >= 0)
            {
                throw new InvalidOperationException("Observer was already added to the observers list");
            }

            _callbacks.Add(callback);
            callback.Invoke(this);
            return(new Subscription <T>(_callbacks, callback));
        }
Exemple #2
0
 public Subscription(List <ValueProviderCallback <T> > observers, ValueProviderCallback <T> observer)
 {
     _callbacks = observers;
     _observer  = observer;
 }
Exemple #3
0
 /// <summary>
 /// Unsubscribe the observer from further value changes.
 /// </summary>
 /// <param name="callback">The callback to be removed</param>
 public void Unsubscribe(ValueProviderCallback <T> callback)
 {
     _callbacks.Remove(callback);
 }