最近、独自の単純なイベント アグリゲーターを実装しようとしました。MSDN のイベント アグリゲーターの記事から多くのインスピレーションを得ました。MSDN のイベント アグリゲーターについて気付いたことが 1 つあります。それは、イベントが実際には独自のクラスであるということです。これはまったく悪いことではありません。ただし、小さなイベントごとに常に新しい空のクラスを作成するのは面倒です。
私が扱いにくいと思う理由は、個々の詳細なイベントごとにクラスを作成する必要があるためです。たとえば、マウス クリック イベントには、double_click、single_click、left_click、right_click などがあります。これらはすべて独自のクラスを持ちます。しばらくするとぐちゃぐちゃになります。
したがって、私自身の実装でClickEvent
は、 がクラスであるような方法で作成できると考えましたが、 Click イベントに関連するすべての詳細なイベントは の「タイプ」になりClickEvent
ます。この場合、「タイプ」はenum
. 使用法は次のようになります。
//Publisher
eventAggregator.GetEvent<ClickEvent>.Publish(ClickEventType.Double_Click, eventArgs);
//Subscriber
eventAggregator.GetEvent<ClickEvent>.Subscribe(ClickEventType.Double_Click, handlerMethod);
ただし、この実装が強く型付けされたイベントを持つという目的全体を無効にするかどうかはわかりませんか? 現在、ClickEvent
はさまざまなイベント列挙型の単なるコンテナーのようです。