asp.net-core-signalr - 如果参数的类型应该是抽象类,如何设计参数
问题描述
我正在设计一个聊天应用程序,它的消息有多种类型,例如:text
、、、,并且卡片消息与消息非常不同。我不想创建简单的方法来处理每条消息,因为如果客户端不支持该消息类型,消息将会丢失(我希望它显示“不支持的消息类型”而不是什么都没有发生)image
card
text
我应该在服务器端做什么?
public async Task GroupMessage(string groupId, IMessage message) // the IMessage will lose many thing
{
}
解决方案
问题是来自客户端的内容只是一些字符串数据。SignalR 必须将其绑定到处理程序中的类型。因此,剩下的就是,而不是or之类的IMessage
东西。Text
Image
为此,您别无选择,只能使用不同的处理程序,每种类型一个。这是您可以绑定所有数据并成功与该数据交互的唯一方法。您不能使用抽象类或接口,除非您可以只拥有该类或接口上存在的数据。
推荐阅读
- r - 如何在 ggplot R 的最大似然函数中合并“sigma”或误差函数和 95% 置信区间?
- macos - 如何查找 Terminal.app 的脚本访问组
- visual-studio-code - IBM Blockchain Platform - 无法调用事务
- c++ - 如何在`std::variant`包装类中使用重载`operator==`来比较Setting Vs Setting和T vs T?
- amazon-web-services - 将 SparkLauncher 与 AWS EMR 步骤结合使用
- java - Amazon SDK - 需要多次复制/粘贴单个文件以重命名每次迭代
- python - 代码的运行时间(由于数组大小)可以这么长以至于阻止代码一起启动吗?
- android - 清晰的画布绘图:Jetpack Compose
- java - 在没有 sorted() 的情况下查找权重最高的动物(地图
(凡动物类)) - string - 哪个性能更高:“替换”或“子字符串”?