IObservable<T>

監視する方がIObserver<T>ならば、監視される方はIObservabler<T>。

https://docs.microsoft.com/ja-jp/dotnet/api/system.iobservable-1?view=netframework-4.8

実装すべきインターフェースは、Subscribeだけであり、これでオブザーバーを登録するのだが、戻り値がIDisposableなのはなぜだろうか。
実は、戻り値を使って、オブザーバーリストから除外することが出来る。

IDisposableを実装したUnobserverDisposableという内部クラスを定義し、コンストラクタ引数でobserversとobserverをもらう。
Disposeでobserversからobserverを削除する。
そんなオブジェクトをSubscribeで戻り値として返してる。

真ん中にButton3
真ん中にButton3

真ん中にButton3。

Button3により、id1.Disposeが実行され、customObserver1の監視を止める。

こうだったり
こうだったり

こうだったり、

こうできるけど
こうできるけど

こうできるけど、

これを押してからだと
これを押してからだと

これを押してからだと、

2番しか来ない
2番しか来ない

2番しか来ない。

Sample/rx/IObservable_T/IObservable_T/src/IObservable_T at master · bg1bgst333/Sample · GitHub