SignalR方法名称可以命名空间吗?

时间:2015-06-15 15:44:32

标签: c# signalr

我有几个SignalR Hub,每个都有几种方法。主要是带有CRUD的签名,即

string AddNode(Node node);
void RemoveNode(string id);
void UpdateNode(Node node);

Node GetNode(string id);
List<Node> GetNodes();

现在每隔一段时间我就不得不向Hub添加更多方法或添加重载并开始播放。调用了错误的方法,我可以解决正在发生的事情。我通常最终会创建一个新的Hub来处理新方法。

我唯一可以理解的是我的方法名称在其中有一个命名空间,如下所示;

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

,其中

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

那么,HubMethodName可以被赋予一个带有“点”的字符串吗?

由于方法参数不同,我的所有方法都可以使用名称“XPort”并且仍然可以工作吗?

1 个答案:

答案 0 :(得分:0)

让我们说你这样做

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

这意味着您将从JS代码中调用此方法为nodeHub.server.A.B.C(req); 生成的signalr / hubs类必须声明一个名为A.B.C

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

将因Uncaught SyntaxError: Unexpected token .而失败 你不能拥有&#39;。&#39;在JS函数名称中。

如何更换为&#39; _&#39;? A_B_C在这种情况下不会有问题。 另外,我想说创建多个Hub类实际上并不是一件坏事。