从 IObservable 获取最新消息

Get latest message from an IObservable

我想用 rx 完成一个非常简单的任务,但我不确定如何完成它。将下面的代码视为最小示例。

        var subject = new Subject<int>();

        subject.OnNext(1);
        subject.OnNext(2);

        Assert.AreEqual(2, subject.__________());
        //                        > what goes above < 

该方法应该只公开给 IObservable 接口。有两个看起来很有用的候选人并没有像我希望的那样。 Latest 方法将阻塞直到下一条不是我正在寻找的行为的消息。 MostRecent 文档看起来很有前途,但未能实现我的期望。

没有一种方法可以做到这一点。 Observables 需要订阅(也可以采用运算符的形式)来传播值。当主题发出(或 OnNexts)值时,您需要激活该订阅。没有任何东西可以为您缓存或存储值。

这是一个使用原始订阅的示例:

var subject = new Subject<int>();

int last = 0;

using (subject.Subscribe(i => last = i))
{
    subject.OnNext(1);
    subject.OnNext(2);
}
Assert.AreEqual(2, last);