2014-02-19 60 views
6

你好我正在使用signalR 2.02,我不能在我的客户端得到正确的派生类。SignalR派生类型

我有以下的情况

Class A {} 
Class B : A{} 

Class Other 
{ 
    public A _member {get;set} 
} 

Other instance = new Other() { _member = new B()} 

我派我的情况下,从中心到客户端,我希望在客户端我会看到_member类型为B,但我认为这是一个。

我试图改变在服务器端的串行如下,但都没有效果

var serializer = new JsonSerializer() 
{ 
    TypeNameHandling = TypeNameHandling.All, 
}; 
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer),() => serializer); 
+0

您使用的是国际奥委会像Ninject? – Anders

+0

我没有使用任何IOC –

回答

4

这是我如何管理在需要时通过定义序列化,包括全类型的解决(默认为不包括他们)。

在服务器端:

var serializer = GlobalHost.DependencyResolver.GetService(typeof(JsonSerializer)) as JsonSerializer; 

serializer.TypeNameHandling = TypeNameHandling.Auto; GlobalHost.DependencyResolver.Register(typeof(JsonSerializer),() => serializer);

在客户端:

_connection = new HubConnection(http://localhost:8080); 
_hubProxy = _connection.CreateHubProxy("MyHub"); 
_hubProxy.JsonSerializer.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto; 
+2

这不适用于我。如果我将它设置为Auto,则没有任何更改,并且我仍然收到服务器上的基类。如果我将它设置为其他任何对象(对象或全部),它已经在_hubProxy.Start()方法上抛出了“错误500内部服务器错误”,所以看起来连接本身已经失败。无论哪种方式,它不工作....任何帮助? –