// ----------------------------------------------------------------------- // // Copyright 2015 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 PerspexObservable(Func, IDisposable> subscribe, string description) { if (subscribe == null) { throw new ArgumentNullException("subscribe"); } this.subscribe = subscribe; this.Description = description; } public string Description { get; } protected override IDisposable SubscribeCore(IObserver observer) { return this.subscribe(observer) ?? Disposable.Empty; } } }