2016-09-21 6 views
1

私はrxで達成したいと思う非常に簡単なタスクがあり、それを達成する方法がわかりません。最小の例として以下のコードを考えてみましょう。IObservableからの最新メッセージを取得

 var subject = new Subject<int>(); 

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

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

このメソッドは、IObservableインターフェイスにのみ公開されている必要があります。私が望むことをしない有益な2人の候補者がいます。 Latestメソッドは、私が探している動作ではない次のメッセージまでブロックされます。 MostRecentのドキュメントは非常に有望でしたが、私が望んだものを提供することができませんでした。

+0

:ここ

は、生のサブスクリプションを使用した例ですか? – Enigmativity

答えて

2

これを行う方法はありません。 Observablesには、サブスクリプションが必要です。サブスクリプションは、値を伝播するためにオペレータの形をとることもできます。サブジェクトが値を送信(または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); 
関連する問題