私はこのトピックに関するconstructive discussionが代わりにクエリにアドホックDo
演算子を追加する、カスタムログ/トレース演算子を追加することになり、2009年
にRxのフォーラムに持ってきたと思います。この演算子は、Subscription、Disposal、OnNext、OnErrorおよびOnCompletedイベントをキャプチャします。実装に応じて、コンソールに書き込んだり、お気に入りのLoggerライブラリを使用したり、OSとVisual Studioの統合用にETWイベントを作成したりすることもできます。
public static class ObservableTrace
{
public static IObservable<TSource> Trace<TSource>(this IObservable<TSource> source, string name)
{
int id = 0;
return Observable.Create<TSource>(observer =>
{
int id1 = ++id;
Action<string, object> trace = (m, v) => Debug.WriteLine("{0}{1}: {2}({3})", name, id1, m, v);
trace("Subscribe", "");
IDisposable disposable = source.Subscribe(
v => { trace("OnNext", v); observer.OnNext(v); },
e => { trace("OnError", ""); observer.OnError(e); },
() => { trace("OnCompleted", ""); observer.OnCompleted(); });
return() => { trace("Dispose", ""); disposable.Dispose(); };
});
}
}
私は常に自分のRxコードをデバッグするのに苦労しています。 – Tim
私はcasperOneによってこの質問が非公式に閉鎖されていることに強く反対します。私は非常に特定の技術の専門知識を探しています。この質問は、「意見、討論、議論、投票、または議論の延長」には至らないでしょう。 – scobi
建設的ではありませんか?たぶん問題は十分に具体的ではないかもしれませんが、それは非常に貴重な質問です。まあ、 "このコードはなぜコンパイルできないのですか"の質問に戻る。 –