<PackageReference Include="System.Reactive" Version="6.0.1" />

AnonymousObserver<T>

public sealed class AnonymousObserver<T> : ObserverBase<T>
Class to create an IObserver<T> instance from delegate-based implementations of the On* methods.
using System.Runtime.CompilerServices; namespace System.Reactive { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public sealed class AnonymousObserver<[System.Runtime.CompilerServices.Nullable(2)] T> : ObserverBase<T> { private readonly Action<T> _onNext; private readonly Action<Exception> _onError; private readonly Action _onCompleted; public AnonymousObserver(Action<T> onNext, Action<Exception> onError, Action onCompleted) { if (onNext == null) throw new ArgumentNullException("onNext"); _onNext = onNext; if (onError == null) throw new ArgumentNullException("onError"); _onError = onError; if (onCompleted == null) throw new ArgumentNullException("onCompleted"); _onCompleted = onCompleted; } public AnonymousObserver(Action<T> onNext) : this(onNext, Stubs.Throw, Stubs.Nop) { } public AnonymousObserver(Action<T> onNext, Action<Exception> onError) : this(onNext, onError, Stubs.Nop) { } public AnonymousObserver(Action<T> onNext, Action onCompleted) : this(onNext, Stubs.Throw, onCompleted) { } protected override void OnNextCore(T value) { _onNext(value); } protected override void OnErrorCore(Exception error) { _onError(error); } protected override void OnCompletedCore() { _onCompleted(); } internal ISafeObserver<T> MakeSafe() { return new AnonymousSafeObserver<T>(_onNext, _onError, _onCompleted); } } }