私はクラスChatManager
を持っていますが、その中にChatServer
とChatClient
(WCF)クラスがあります。サブスクリプションするイベントのバブリング
私はChatManager
をインスタンス化し、私のコントローラはChatClient
上にあるUserConnected
、UserDisconnected
とMessageReceived
イベントにサブスクライブすることができるようにしたいです。
これを行う最もエレガントで論理的な方法は何ですか?私が持っているのと同じようにChatClient
のイベントを定義してから、ChatManager
のイベントをコントローラーに渡すだけで、ChatClient
を処理したり知ったりすることなくイベントを再定義するのは愚かですか? ChatManager
はChatClient
のイベントに登録してから、ChatController
が聴いているイベントを開始します。
WPFはイベントのバブリングという概念を持っていますが、それがこのタイプのシナリオ用であるかどうかは分かりません。何もユーザーインターフェイスの一部ではないためです。
スティーブ、私は両方の存在の正当性について正しいかもしれないと思います。もともと私はすべてのサーバーコードとすべてのクライアントコードをマネージャークラス自体に持っていました。私は最近、そのすべてを2つの別々のクラスにリファクタリングしました。マネージャーは単にサーバーを起動し、サーバーとクライアントをインスタンス化してサーバーに参加する手段にすぎません。 私は今チャットマネージャーを取り除き、コントローラーにそのすべてをさせるのが最良の方法だと思います。コントローラがあまりにも肥大化するかどうかは不思議ですが。しかし、論理的にはその責任に当てはまると思います。 – Cowman
+1が同意しました。これが起こるときはいつでも、それに疑問を呈してください。 – nycynik