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