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