Notification クラスを使用するタイミングと理由を理解しようとしています。ToNotifier と FromNotifier に関連しているように見えますが、それらの使用方法については完全にはわかりません。
オブザーバブル シーケンスとオブザーバーの間のバインディングのような双方向を作成するためですか?
ありがとう、エギル。
Notification クラスを使用するタイミングと理由を理解しようとしています。ToNotifier と FromNotifier に関連しているように見えますが、それらの使用方法については完全にはわかりません。
オブザーバブル シーケンスとオブザーバーの間のバインディングのような双方向を作成するためですか?
ありがとう、エギル。
マテリアライズと通知については、ここで少し書きました。
http://www.zerobugbuild.com/?p=47
また、ここでも使用しました:
http://social.msdn.microsoft.com/Forums/en-US/rx/thread/bbcc1af9-64b4-456b-9038-a540cb5f5de5
私が個人的に使用Notification<T>
したのは、複数のマージされたストリームで異常なエラー トラップを実行しなければならなかったときだけでした。
public class ImportantException : Exception {}
var src1 = new Subject<int>();
var src2 = new Subject<int>();
var wrapped = Observable.Merge(src1.Materialize(), src2.Materialize());
var query =
from note in wrapped
let fail = note.Kind == NotificationKind.OnError
let ignorable = fail && !(note.Exception is ImportantException)
where !fail || !ignorable
select note;
using(query.Subscribe(Console.WriteLine))
{
src1.OnNext(1);
src2.OnNext(1);
src1.OnError(new Exception());
src2.OnError(new ImportantException());
}
したがって、基本的には、複数 (私の場合は数十) のマージされたストリームからの特定の種類のエラーのみをサブスクライバーに浸透させたいと考えていました。上記の非現実的な例の出力は次のとおりです。
OnNextNotification<int> { Value = 1 }
OnNextNotification<int> { Value = 1 }
OnErrorNotification<int> { Exception = (ImportantException) }
(そして、はい、構造体を使用して多少の調整を加えることでこれを複製できますがCatch
、この形式で読み通す方が簡単であることがわかりました)
アプリのサービスで Rx クエリを単体テストしようとしているときに、最近使い始めました。これで、テスト対象のサービス コールにを渡しTestScheduler
、Rx クエリに でイベントを生成させることができます。これらのイベントは、インスタンスTestScheduler
のコレクションとして検査のために単体テストにアクセスできます。Notification<>
この記事の「 Rx クエリのテスト」セクションでアプローチを確認できます。