私がやろうとしているのは、オブザーバー パターンを実装することだけです。
だから、私はこの解決策を思いついた:
購読しているすべての人に通知を送信することを主な仕事とする PoliceHeadQuarters があります。DSP、Inspector、および SubInspector クラスが PoliceHeadQuarters にサブスクライブされていることを考慮してください。
私が書いたイベントとデリゲートの使用
public class HeadQuarters
{
public delegate void NewDelegate(object sender, EventArgs e);
public event EventHandler NewEvent;
public void RaiseANotification()
{
var handler = this.NewEvent;
if (handler != null)
{
handler(this, new EventArgs());
}
}
}
public class SubInspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
public class Inspector
{
public void Listen(object sender, EventArgs e)
{
MessageBox.Show(string.Format("Event Notification received by sender = {0} with eventArguments = {1}", sender, e.ToString()));
}
}
そして、これが私がそれを呼び出した方法です
var headQuarters = new HeadQuarters();
var SubInspector = new SubInspector();
var Inspector = new Inspector();
headQuarters.NewEvent += Inspector.Listen;
headQuarters.NewEvent += SubInspector.Listen;
headQuarters.RaiseANotification();
そのため、関数 RaiseANotification() が呼び出されるたびに、Inspector クラスと SubInspector クラスの両方が通知を受け取ります。
DotNet Framework 4、4.5 は、IObserver および IObservable と呼ばれる新しい方法をサポートしているようです。
上記のシナリオで IObservable と IObserver パターンを使用した非常に簡単な例を教えてください。私は、インターネットで利用可能な例があまりにも肥大化し、理解するのが難しいことを見つけるためだけにグーグルで検索しました.
私のヒンチ:(おそらく間違っていると思います)
class DSP : IObserver //since it observes the headquarters ?
class PoliceHeadQuarters: IObservable // since here's where we send the notifications ?
前もって感謝します。
編集:MSDNのドキュメントも IObservable @ IObservable vs Plain Events または なぜ IObservable を使用する必要があるのか について間違っていると誰かが言いましたか? .