SignalR派生类型

时间:2014-02-19 06:40:02

标签: c# json.net signalr

你好我正在使用signalR 2.02,我无法在我的客户端获得正确的派生类。

我有以下情况

Class A {}
Class B : A{}

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

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

我将我的实例从集线器发送到客户端,我希望在客户端我会看到_member类型为B,但我认为它是A。

我已尝试更改服务器端的序列化程序,如下所示,但无效

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

1 个答案:

答案 0 :(得分: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;