// -----------------------------------------------------------------------
//
// 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;
}
}
}