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

PushToPullAdapter<TSource, TResult>

abstract class PushToPullAdapter<TSource, TResult> : IEnumerable<TResult>, IEnumerable
using System.Collections; using System.Collections.Generic; using System.Runtime.CompilerServices; namespace System.Reactive.Linq.ObservableImpl { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal abstract class PushToPullAdapter<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult> : IEnumerable<TResult>, IEnumerable { private readonly IObservable<TSource> _source; protected PushToPullAdapter(IObservable<TSource> source) { _source = source; } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } public IEnumerator<TResult> GetEnumerator() { PushToPullSink<TSource, TResult> pushToPullSink = Run(); pushToPullSink.SetUpstream(ObservableExtensions.SubscribeSafe<TSource>(_source, (IObserver<TSource>)pushToPullSink)); return pushToPullSink; } protected abstract PushToPullSink<TSource, TResult> Run(); } }