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