SignalR 方法名称可以命名空间吗?
Can a SignalR method name be namespaced?
我有几个 SignalR Hub,每个都有几种方法。大多数带有 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可以给一个字符串"dots"吗?
我的所有方法都可以使用名称 "XPort" 并且由于方法参数不同而仍然有效吗?
假设你这样做
public const string hubName = "A.B.C";
[HubMethodName(hubName)]
public void GetNode(SRGetNodeReq req)
{
...
}
这意味着您可以从 JS 代码中调用此方法 nodeHub.server.A.B.C(req);
您生成的 signalr/hubs class 必须声明一个名为 A.B.C
的函数
proxies['nodeHub'].server = {
A.B.C: function () {
这将失败 Uncaught SyntaxError: Unexpected token .
你不能有 '.'在 JS 函数名中。
替换为“_”如何? A_B_C
在这种情况下没有问题。
另外,我想说创建多个 Hub classes 实际上并不是一件坏事。
我有几个 SignalR Hub,每个都有几种方法。大多数带有 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可以给一个字符串"dots"吗?
我的所有方法都可以使用名称 "XPort" 并且由于方法参数不同而仍然有效吗?
假设你这样做
public const string hubName = "A.B.C";
[HubMethodName(hubName)]
public void GetNode(SRGetNodeReq req)
{
...
}
这意味着您可以从 JS 代码中调用此方法 nodeHub.server.A.B.C(req);
您生成的 signalr/hubs class 必须声明一个名为 A.B.C
proxies['nodeHub'].server = {
A.B.C: function () {
这将失败 Uncaught SyntaxError: Unexpected token .
你不能有 '.'在 JS 函数名中。
替换为“_”如何? A_B_C
在这种情况下没有问题。
另外,我想说创建多个 Hub classes 实际上并不是一件坏事。