信号R 派生类型



您好,我正在使用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); 

这就是我通过定义序列化程序在需要时包含完整类型(默认值不包括它们)来解决的方法。

在服务器端:

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;

相关内容

  • 没有找到相关文章

最新更新