Наследование и сериализация
Имеется базовый класс AudioObject
, от которого наследуются два класса: Audio
и AudioUser
. Также имеем класс AudioList
, в котором есть поле List<AudioObject>
. В этом поле может храниться список объектов смешанных типов: Audio
и AudioUser
.
public class AudioObject
{
}
public class Audio : AudioObject
{
public uint id { get; set; }
public string title { get; set; }
}
public class AudioUser : AudioObject
{
public string id { get; set; }
public string name { get; set; }
}
public class AudioList
{
public int count { get; set; }
public List<AudioObject> list { get; set; }
}
Попытаемся сериализовать и десириализовать объкт AudioList
:
AudioList list = new AudioList();
list.count = 1;
list.list = new List<AudioObject> { new Audio { id = 1, title = "Test"} };
string serialized = JsonConvert.SerializeObject(list);
AudioList newList = JsonConvert.DeserializeObject<AudioList>(serialized);
Audio audio = newList.list[0] as Audio;
Сериализация происходит успешно, но вот десериализация возвращает нулевые объекты из списка List<AudioObject>
.
В чем моя ошибка?
Источник: Stack Overflow на русском