我需要创建自定义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();
}
}
我该如何实施这种方法?
答案 0 :(得分:1)
我不知道您的问题,但是如果您可以替换实现IObservable
来公开返回IObservable
的属性/方法,那么您将会感觉好多了。如果你能做到这一点,你可以轻松地从某些Rx's create methods返回一个基于Rx的Observable。
如果你不能这样做,我建议包装一个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);
}
}
答案 1 :(得分:1)
我猜你不想做你正在做的事情。
通过简要介绍一下您想要模仿的“商店”类,它似乎是某种Subject
。 Subject
既是IObserver
又是IObservable
,并且有许多实现提供的开箱即用。这是界面:
public interface ISubject<in TSource, out TResult> : IObserver<TSource>, IObservable<TResult>
{
}
这是一篇关于主题的非常好的文章以及何时在这里使用它们: http://davesexton.com/blog/post/To-Use-Subject-Or-Not-To-Use-Subject.aspx