Как десериализовать полиморфную коллекцию с помощью протокола ASP.NET Core SignalR MessagePack - PullRequest
0 голосов
/ 24 июня 2019

Я использую SignalR для передачи коллекции объектов подклассов клиентам.Поскольку данные должны отправляться довольно часто, и их объем значителен, я бы хотел использовать протокол MessagePack для сериализации.Однако мне не удалось найти информацию о том, как настроить SignalR , чтобы включить десериализацию для получения коллекции не базового класса, а производных классов.

Вот общая информация о конфигурации Протокол MessagePack Hub

С сериализацией Json это можно сделать следующим образом:

Код сервера:

 public void ConfigureServices(IServiceCollection services)
 {
        //...            
        services.AddSignalR()
        .AddJsonProtocol(options => options.PayloadSerializerSettings.TypeNameHandling = TypeNameHandling.Auto);
 }

Клиенткод:

_connection = new HubConnectionBuilder()
                 .AddJsonProtocol(options => options.PayloadSerializerSettings.TypeNameHandling = TypeNameHandling.Auto)
                 .Build();
...