C# десериализация динамического объекта из json

Я отправляю данные в формате json строки. Есть два класса: SendData(универсальный упаковщик, оболочка) и Message(непосредственно информация). И мне хочется, чтоб SendData в качестве данных мог иметь не только тип Message, но и любой другой. А на стороне получателя, я уже сам разберусь с типами. Поэтому я выбрал такой вариант:

namespace Serializer
{
    public class SendData // контейнер
    {
        public dynamic Data; // Динамический, чтоб хранить любой тип

        public DateTime Date = DateTime.Now;

        public SendData(object data)
        {
            Data = data;
        }
    }
}

namespace Serializer.Data
{
    public class Message // это уже сами данные
    {
        public string SenderLogin;
        public string Text;
        public DateTime Date = DateTime.Now;

        public Message(string text, string senderLogin)
        {
            Text = text;
            SenderLogin = senderLogin;
        }

    }
}

Я использую Newtonsoft.Json; который сериализует и десериализует эти объекты. Ошибка в том, что при десериализации строки я получаю объект SendData, в котором поле с объектом Message остается в виде Object, а не экземпляра Message.

Пример

Message message = new Message(text, Name);
SendData sendData = new SendData(message);

string data = SerializeService.Serialize(sendData);
SendData abc = SerializeService.Deserialize(data);

Есть вариант, чтоб хранить тип в отдельном поле, а на стороне получателя уже сравнить типы и приводить к нужному, но думаю я, что библиотека и сама может этим заняться


Ответы (0 шт):