Skip to content

Instantly share code, notes, and snippets.

@GeorgeTsiokos
Created August 21, 2017 19:06
Show Gist options
  • Save GeorgeTsiokos/e848a00159ef85f488f7bddb2cd57a9d to your computer and use it in GitHub Desktop.
Save GeorgeTsiokos/e848a00159ef85f488f7bddb2cd57a9d to your computer and use it in GitHub Desktop.
public static class SingleProducer
{
public static IObservable<T> Merge<T>(params IObservable<T>[] sequences)
{
IDisposable SubscribeObserver(IObserver<T> observer)
{
IDisposable SubscribeSequence(IObservable<T> sequence) => sequence.Subscribe(observer);
foreach (var sequence in sequences)
sequence.Subscribe(observer);
return new CompositeDisposable(sequences.Select(SubscribeSequence));
}
return Observable.Create((Func<IObserver<T>, IDisposable>) SubscribeObserver);
}
public static IObservable<T> Merge<T>(IObservable<IObservable<T>> sequences) => sequences.SelectMany(sequence => sequence);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment