public ChainNotifier(IObservable <TPrevious> predecessor, Action <TPrevious, Action <T> > chain) { if (predecessor == null) { throw new ArgumentNullException("predecessor"); } var observer = Observer2.Create <TPrevious>(o => chain(o, NotifyNext), NotifyError, NotifyCompleted); _disposable = predecessor.Subscribe(observer); }
public static IObservable <TResult> ChainNext <TSource, TResult>(this IObservable <TSource> source, Func <IObserver <TResult>, Action <TSource> > getOnNext) { if (source == null) { throw new ArgumentNullException("source"); } if (getOnNext == null) { throw new ArgumentNullException("getOnNext"); } var chain = new ObservableChain <TResult>(); var observer = Observer2.Create(getOnNext(chain), chain.OnError, chain.OnCompleted); chain.Subscription = source.Subscribe(observer); return(chain); }