IObserver<T>

Reactive Extensionsは、ReactiveX(リアクティブプログラミング)を実現するためのライブラリ。

ReactiveX
GitHub - dotnet/reactive: The Reactive Extensions for .NET
Reactive Extensionsのはじめかた - かずきのBlog@hatena
C#の主要インターフェース解説:IObservable<T>、IObserver<T> - がりらぼ

このカテゴリでは本家のC#版を扱う。

WPFプロジェクトを作成し、

Button
Button

Buttonを選択。

配置
配置

このように配置。
Buttonのハンドラもダブルクリックで用意しておく。

NuGet
NuGet

NuGetから、

System.Reactive
System.Reactive

System.Reactiveで検索。

これを選択
これを選択

1番上のこれを選択してインストール。

一覧
一覧

必要なものが一通りインストールされる。

完了
完了

完了したらこうなる。

新しい項目
新しい項目

新しい項目で、

CustomObserver.cs
CustomObserver.cs

クラスCustomObserver.csを追加。

IObserver&lt;string&gt;
IObserver<string>

IObserver<string>を継承するので、

インターフェース
インターフェース

インターフェースの内部処理を実装する。

自動
自動

自動だとこうなるので、ちょっと修正して、

OnNextで渡された文字列valueをMessageBox.Showで表示する。

新しい項目
新しい項目

新しい項目で、

CustomObservable.cs
CustomObservable.cs

今度はCustomObservable.cs。

インターフェース
インターフェース

こちらもインターフェースを実装。

自動
自動

修正すると、

Subscribeでリスト追加、Executeでforeach実行。

MainWindow.xaml.csは、

customObservableにcustomObserver1、customObserver2の2つを登録。
Buttonがクリックされたら、customObservable.Executeを実行。この時、文字列"ABCDE"を渡す。

実行時
実行時

実行して、Buttonを押すと、

ABCDE(1回目)
ABCDE(1回目)

ABCDE(2回目)
ABCDE(2回目)

customObserver1、customObserver2、と2つあるので、2回表示される。

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