gpt4 book ai didi

c# - 冒泡要订阅的事件

转载 作者:太空狗 更新时间:2023-10-29 23:32:50 25 4
gpt4 key购买 nike

我有一个 ChatManager 类,其中有一个 ChatServer 和一个 ChatClient(WCF) 类。

我希望实例化 ChatManager 的 Controller 能够订阅 UserConnectedUserDisconnectedMessageReceived ChatClient 上的事件。

最优雅、最合乎逻辑的方法是什么?像我一样在 ChatClient 中定义事件,然后在 ChatManager 中重新定义事件只是为了将事件传递给 Controller 而不需要它处理或了解ChatClientChatManager 会订阅 ChatClient 的事件,然后触发 ChatController 会监听的自己的事件。

我知道 WPF 有事件冒泡的概念,但我不知道这是否适用于这种情况,因为用户界面没有任何内容。

最佳答案

我首先要质疑 ChatManagerChatController 是否都可以证明自己的存在。通常,当您发现自己创建一个“Manager”类时,实际上并没有必要,尤其是当它所做的部分工作仅包括中继消息时。

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

关于c# - 冒泡要订阅的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13961299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com