Предполагая, что вам не нужно вызывать OnNext напрямую, может быть то, что вам нужно: холодная наблюдаемая:
IObservable<int> coldObservable = Observable.Create<int>(obs =>
{
obs.OnNext(1);
obs.OnNext(2);
obs.OnNext(3);
obs.OnCompleted();
return () => { };
});
В противном случае ReplaySubject позволит вам сохранить размерный буфер значений, который будетизлучается при подписке каждого наблюдателя.Не совсем то же самое, что вспоминать все значения, которые я понимаю, но в любом случае это не будет хорошей идеей из-за использования памяти.Может быть ближе, чем единственное значение, которое обеспечивает BehaviourSubject.
Следующее позволит 2 значениям быть доступными для новых подписчиков:
ISubject<int> replaySubject = new ReplaySubject<int>(2);
IObservable<int> observable;
[TestMethod]
public void TestMethod()
{
observable = replaySubject;
replaySubject.OnNext(1);
replaySubject.OnNext(2);
replaySubject.OnNext(3);
replaySubject.OnNext(4);
replaySubject.OnNext(5);
observable.Subscribe(OnValue);
}
Выход:
Наблюдаемое значение: 4 Наблюдаемое значение: 5