首页 > 解决方案 > 如果参数的类型应该是抽象类,如何设计参数

问题描述

我正在设计一个聊天应用程序,它的消息有多种类型,例如:text、、、,并且卡片消息与消息非常不同。我不想创建简单的方法来处理每条消息,因为如果客户端不支持该消息类型,消息将会丢失(我希望它显示“不支持的消息类型”而不是什么都没有发生)imagecardtext

我应该在服务器端做什么?

public async Task GroupMessage(string groupId, IMessage message) // the IMessage will lose many thing
{
}

标签: asp.net-core-signalr

解决方案


问题是来自客户端的内容只是一些字符串数据。SignalR 必须将其绑定到处理程序中的类型。因此,剩下的就是,而不是or之类的IMessage东西。TextImage

为此,您别无选择,只能使用不同的处理程序,每种类型一个。这是您可以绑定所有数据并成功与该数据交互的唯一方法。您不能使用抽象类或接口,除非您可以只拥有该类或接口上存在的数据。


推荐阅读