鼓励要订阅的事件

Cow*_*man 5 c# wcf events

我有一个类ChatManager,里面有一个ChatServer和一个ChatClient(WCF)类.

我希望我实例化的控制器ChatManager能够订阅UserConnected,UserDisconnected以及MessageReceived在其上的事件ChatClient.

这样做最优雅,最合乎逻辑的方法是什么?对我来说,定义事件ChatClient就像我一样愚蠢,然后重新定义事件ChatManager只是为了将事件传递给Controller,而不必处理或了解ChatClient?在ChatManager将订阅的事件ChatClient,然后火了自己的事件,该ChatController会听.

我知道WPF具有冒泡事件的概念,但我不知道这是否适用于这种情况,因为没有任何东西是用户界面的一部分.

Ste*_* Py 2

我首先要质疑两者是否ChatManagerChatController可以证明自己的存在是合理的。通常,每当您发现自己创建“Manager”类时,实际上没有必要,特别是如果它所做的部分工作仅包括中继消息。

控制器类可能会与 SRP 作斗争,因为它们的“职责”相当广泛。如果您想要委派某些行为的责任,则将责任留给ChatClient控制器,并使用ChatClient(通过契约接口)初始化从属控制器,以便它可以根据需要与客户端进行交互。只需确保当您开始注册事件时,在丢弃下属或客户端之前取消注册这些事件,否则您将面临托管内存泄漏。