2015-06-15 86 views
0

我有幾個SignalR Hub,每個都有幾種方法。大多是像簽名CRUD即SignalR方法名是否可以命名空間?

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」,並且由於方法參數不同而仍然可以工作?

+0

@DDan指出下面,在JS代碼中的點是行不通的!我一直在使用C#客戶端,但這是一個很好的觀點。 –

回答

0

比方說,你這樣做

​​

這意味着你會打電話從JS代碼這種方法nodeHub.server.A.B.C(req); 你產生signalr /集線器類必須聲明一個名爲ABC

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

功能,將無法使用Uncaught SyntaxError: Unexpected token . 您不能有'​​。'在JS函數名稱中。

如何替換爲'_'? A_B_C在這種情況下不會有問題。 另外,我會說創建多個Hub類實際上並不是一件壞事。

+0

嘿,我應該提到我只需要C#客戶端,但這是一個很好的觀點。如果我確實想使用JS客戶端,那麼它從一開始就會失敗。我將單獨刪除名稱空間。 –