是否可以对 SignalR 方法名称进行命名空间

本文关键字:命名空间 方法 SignalR 是否 | 更新日期: 2023-09-27 17:56:14

我有几个 SignalR 中心,每个中心都有几种方法。主要带有类似 CRUD 的签名,即

string AddNode(Node node);
void RemoveNode(string id);
void UpdateNode(Node node);
Node GetNode(string id);
List<Node> GetNodes();

现在,我时不时地必须向 Hub 添加更多方法或添加重载,事情开始发挥作用。错误的方法被调用,我只能弄清楚发生了什么。我通常最终会创建一个新的集线器来处理新方法。

我唯一可以归结为我的方法名称中有一个命名空间,如下所示;

[HubMethodName(XPortConst.Methods.GetNode)]
public void GetNode(SRGetNodeReq req)
{
    ...
}

哪里

public const string XportConst.Methods.GetNode = "Xport.Method.GetNode";

那么,HubMethodName 可以给出一个带有"点"的字符串吗?

我的所有方法都可以命名为"XPort",并且由于方法参数不同而仍然有效吗?

是否可以对 SignalR 方法名称进行命名空间

假设你这样做

public const string hubName = "A.B.C";
[HubMethodName(hubName)]
public void GetNode(SRGetNodeReq req)
{
    ...
}

这意味着您将从 JS 代码调用此方法nodeHub.server.A.B.C(req);生成的信号器/集线器类必须声明一个名为 A.B.C 的函数

proxies['nodeHub'].server = {
            A.B.C: function () {

这将因Uncaught SyntaxError: Unexpected token .而失败JS函数名称中不能有"."。

替换为"_"怎么样? 在这种情况下,A_B_C不会有问题。另外,我想说创建多个 Hub 类实际上并不是一件坏事。