System.Reactive:实现一个IObservable



我需要创建自定义IObservable。我在那边读了一些,我最终发现我不应该直接实现IObservable<T>

我注意到有一个ObservableBase<T>.这是一个抽象类,所以我需要实现抽象方法:

public class Store<TState> : ObservableBase<TState>, IObserver<IAction>
{
    public void OnCompleted()
    {
        throw new NotImplementedException();
    }
    public void OnError(Exception error)
    {
        throw new NotImplementedException();
    }
    public void OnNext(IAction value)
    {
        throw new NotImplementedException();
    }
    protected override IDisposable SubscribeCore(IObserver<TState> observer)
    {
        >>>>>>>>>>>>>>>>>******<<<<<<<<<<<<<<<<<<<<<<<
        throw new NotImplementedException();
    }
}

我应该如何实现此方法?

我不知道

你的问题,但如果你可以替换实现IObservable来公开返回IObservable的属性/方法,你会好多了。如果可以做到这一点,则可以轻松地从Rx的某些创建方法返回基于Rx的可观察量。

如果你不能做到这一点,我建议包装一个Subject<T>

public class MyIntObservable : IObservable<int>
{
    private readonly Subject<int> _mySubject = new Subject<int>();
    public IDisposable Subscribe(IObserver<int> observer)
    {
        return _mySubject.Subscribe(observer);
    }
}

我猜你不想做你正在做的事情。

从您要模仿的"商店"类的简要看,它似乎是某种SubjectSubject既是IObserver又是IObservable,并且有许多现成的实现。这是界面:

public interface ISubject<in TSource, out TResult> : IObserver<TSource>, IObservable<TResult>
{
}

这是一篇关于Subject以及何时在此处使用它们的非常好的文章:https://www.davesexton.com/blog/post/To-Use-Subject-Or-Not-To-Use-Subject.aspx

相关内容

  • 没有找到相关文章

最新更新