2012-04-29 51 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被调用,我在控制台日志得到错误,错误调用服务器方法。 –