我需要创建自定义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);
}
}
我猜你不想做你正在做的事情。
从您要模仿的"商店"类的简要看,它似乎是某种Subject
。Subject
既是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