// ----------------------------------------------------------------------- // // Copyright 2014 MIT Licence. See licence.md for more information. // // ----------------------------------------------------------------------- namespace Perspex.Reactive { using System; using System.Reactive; using System.Reactive.Disposables; public sealed class PerspexObservable : ObservableBase, IDescription { private readonly Func, IDisposable> subscribe; public string Description { get; } public PerspexObservable(Func, IDisposable> subscribe, string description) { if (subscribe == null) { throw new ArgumentNullException("subscribe"); } this.subscribe = subscribe; this.Description = description; } protected override IDisposable SubscribeCore(IObserver observer) { return this.subscribe(observer) ?? Disposable.Empty; } } }