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

Sink<TSource, TTarget>

abstract class Sink<TSource, TTarget> : Sink<TTarget>, IObserver<TSource>
Base class for implementation of query operators, providing a lightweight sink that can be disposed to mute the outgoing observer.
using System.Runtime.CompilerServices; namespace System.Reactive { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] internal abstract class Sink<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TTarget> : Sink<TTarget>, IObserver<TSource> { [System.Runtime.CompilerServices.Nullable(0)] private sealed class _ : IObserver<TTarget> { private readonly Sink<TSource, TTarget> _forward; public _(Sink<TSource, TTarget> forward) { _forward = forward; } public void OnNext(TTarget value) { _forward.ForwardOnNext(value); } public void OnError(Exception error) { _forward.ForwardOnError(error); } public void OnCompleted() { _forward.ForwardOnCompleted(); } } protected Sink(IObserver<TTarget> observer) : base(observer) { } public virtual void Run(IObservable<TSource> source) { SetUpstream(ObservableExtensions.SubscribeSafe<TSource>(source, (IObserver<TSource>)this)); } public abstract void OnNext(TSource value); public virtual void OnError(Exception error) { ForwardOnError(error); } public virtual void OnCompleted() { ForwardOnCompleted(); } public IObserver<TTarget> GetForwarder() { return new _(this); } } }