4

アーキテクチャと設計の観点から、イベントアグリゲータのパターンを理解しようとしています。これまでWPFでPrismを使用したことはありませんが、MSDNでPrismがどのように機能するかを調べています。

すべてのイベントについて、ユーザーはを拡張する新しいイベントオブジェクトを作成する必要があるように思われますCompositePresentationEvent。また、新しいイベントオブジェクトには、継承元の機能以外の機能がないようです(通常はそれ自体のコードはありません)。

したがって、たとえば:

A AddNewStuffEventは次のようになります。

public class AddNewStuffEvent : CompositePresentationEvent<Object> {} //The end of the class

の場合HealthChangeEvent

public class HealthChangeEvent: CompositePresentationEvent<Object> {} //The end of the class

の場合BookFlipEvent

public class BookFlipEvent: CompositePresentationEvent<Object> {} //The end of the class

の場合BookCloseEvent

public class BookCloseEvent: CompositePresentationEvent<Object> {} //The end of the class

BookOpenEventそして、これは、などの小さなイベントごとに永遠に続く可能性がBookTearEventあります。したがって、特定の名前空間フォルダーには、大量のイベントクラスがあり、イベントアグリゲーターには、実行時にこれらすべてのイベントオブジェクトが読み込まれます。 。つまり、すべての小さなイベントには空のクラスが必要ですか?これはどのように機能しますか?これのためのより良い方法は何でしょうか?

4

1 に答える 1

3

はい、すべてのイベントタイプには、定義する必要のある独自のクラスが必要です。

また、新しいイベントオブジェクトには、継承元以外の機能がないようです。

目的は、単にイベントに強い型付けを提供することです。これにより、サブスクライブするコードを簡単に作成できます。つまり、サブスクライブコードは次のように記述できます。

aggregator.GetEvent<AddNewStuffEvent>().Subscribe(Handler);

aggregator.GetEvent("AddNewStuffEvent").Subscribe(Handler)これは、sayの形式の「マジックストリング」 (コンパイル時に検証できなかった)に依存するなど、代替手段への好ましいアプローチです。

于 2012-10-21T06:25:24.440 に答える