2016-09-21 45 views
1

我有一個非常簡單的任務,我想用rx完成,但我不知道如何完成它。考慮下面的代碼作爲最小的例子。從IObservable獲取最新消息

 var subject = new Subject<int>(); 

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

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

該方法應該只暴露給IObservable接口。有兩個有用的候選人不符合我的期望。 Latest方法將阻塞,直到下一個消息不是我正在尋找的行爲。 MostRecent文件看起來非常有前途,但未能實現我所希望的。

+0

爲什麼你想這樣做嗎? – Enigmativity

回答

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);