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);
Есть вариант, чтоб хранить тип в отдельном поле, а на стороне получателя уже сравнить типы и приводить к нужному, но думаю я, что библиотека и сама может этим заняться