IObservable/IObserver — standard observer.
Observable:
1public class TemperatureSensor : IObservable<int>2{3 private readonly List<IObserver<int>> _observers = new();45 public IDisposable Subscribe(IObserver<int> observer)6 {7 _observers.Add(observer);8 return new Unsubscriber(_observers, observer);9 }1011 public void Notify(int temp)12 {13 foreach (var obs in _observers)14 obs.OnNext(temp);15 }16}
Observer:
1public class TemperatureDisplay : IObserver<int>2{3 public void OnNext(int value) =>4 Console.WriteLine($"Temperature: {value}");5 public void OnError(Exception ex) { }6 public void OnCompleted() { }7}
Key: IObservable for source, IObserver for consumer.