2012-04-29 87 views
4

我想擴展SignalR Hub類來創建一個基礎類,它是一個SignalR Hub,它是核心,但有一些額外的Pzazz。擴展SignalR服務器集線器類來創建集線器基類

我的基類:

public class MyBaseHub : Hub 
{ 
    protected ISession NhSession { get; set; } 

    public MyBaseHub(ISession nhSession) 
    { 
     NhSession = nhSession; 
    } 
} 

我的派生類:

public class MyDerivedHub : MyBaseHub 
{     
    public MyDerivedHub(ISession nhSession) : base(nhSession) { } 
} 

上面構建精細,但SignalR生成的JavaScript會引發錯誤,我不能在客戶端創建的連接。我的基類中有更多的代碼,但我全力以赴縮小問題範圍,發現問題出在客戶端。

生成的JavaScript拋出一個異常,「未捕獲的SyntaxError:意外的號碼」,定義MyBaseHub樞紐客戶端時:

myBaseHub`1: { generated properties go in here } 

所以我猜SignalR集線器只能繼承一次?有誰知道我想要做什麼是可能的?

回答

4

你的問題說基地樞紐是通用的,但代碼示例沒有顯示它。如果你使這個類抽象化,代理生成器將不會提取它。此外,您可以使用[HubName]屬性重命名集線器。

[HubName("MyHub")] 
public class MyHub2 : Hub 
{ 
} 
+0

謝謝,使基類抽象工作。 –

+0

幫我理解這一點,我也有這個問題。使用web api 2項目服務和mvc 5項目作爲客戶端應用程序,我的中心是在web api現在我想從客戶端應用程序調用中心方法。 #1。我無法生成自動代理,可能是因爲單獨的項目。 #2。如果我使用沒有生成的代理方法,服務器方法dosent被調用,我在控制檯日誌得到錯誤,錯誤調用服務器方法。 –