gpt4 book ai didi

c# - SignalR 派生类型

转载 作者:太空狗 更新时间:2023-10-29 21:44:45 25 4
gpt4 key购买 nike

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

关于c# - SignalR 派生类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21872966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com