从IObservable获取最新消息

时间:2016-09-21 11:57:38

标签: c# system.reactive reactive-programming

我有一个非常简单的任务,我想用rx完成,我不知道如何实现它。考虑下面的代码作为最小示例。

        var subject = new Subject<int>();

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

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

该方法应该只暴露给IObservable接口。有两个有用的候选人没有做我希望的事情。 Latest方法将阻塞,直到下一条消息不是我要查找的行为。 MostRecent文档看起来非常有前途,但未能实现我所希望的目标。

1 个答案:

答案 0 :(得分:2)

没有一种方法可以做到这一点。 Observable需要一个订阅,它也可以采用运算符的形式来传播值。当主题发出(或OnNext s)值时,您需要激活该订阅。没有什么可以为你缓存或存储价值。

以下是使用原始订阅的示例:

var subject = new Subject<int>();

int last = 0;

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