Rxメモ2  Subscribe<TSource>(this IObservable<TSource>)、class Subject<T>

System.Subscribe<TSource> 拡張メソッド
第2引数以降に指定したデリゲートを各関数で
実行するObserver(監視者)を内部で作成し
第一引数のIObservable(監視対象)に登録する。

namespace System
{
   public static class ObservableExtensions
    {
        public static IDisposable Subscribe<TSource>(this IObservable<TSource> source);
        public static IDisposable Subscribe<TSource>(this IObservable<TSource> source,
            Action<TSource> onNext);
        public static IDisposable Subscribe<TSource>(this IObservable<TSource> source,
            Action<TSource> onNext, Action onCompleted);
        public static IDisposable Subscribe<TSource>(this IObservable<TSource> source,
            Action<TSource> onNext, Action<Exception> onError);
        public static IDisposable Subscribe<TSource>(this IObservable<TSource> source,
            Action<TSource> onNext, Action<Exception> onError, Action onCompleted);
    }
}

Subject<T>クラス
IObservable<T>、IObserver<T>の両方を持つ。
IObservableは通知を受ける側ではなく
通知を送るのに使われている
IObservableの実装クラスにprivateメンバとして持たせることで、
外部からは登録のみ可能で、
通知はできないようになり、
eventの代わりになる。

namespace System.Reactive.Subjects
{
    public sealed class Subject<T> : ISubjec<T>, ISubject<T, T>, IObserver<T>, IObservable<T>, IDisposable
    {
        public Subject();
        public void Dispose();
        public void OnCompleted();
        public void OnError(Exception error);
        public void OnNext(T value);
        public IDisposable Subscribe(IObserver<T> observer);
    }
}


広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: C#, Rx パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中