Как десериализовать детские классы?
У меня есть список, который содержит элементы одного базового класса, но разных дочерних классов. Как я могу десериализовать это?
Например
class Base {
}
class Child: Base {
int Property { get; set; }
}
class Ser {
public List<Base> Values { get; set; }
}
Спасибо
1 ответ
Десериализатор не может автоматически определить, какой дочерний тип вы ожидаете. Поэтому вам нужно указать тип ребенка с помощью тега. Например:
YAML
- !!child
Property: 1
- !!child
Property: 2
C#
var deserializer = new Deserializer();
deserializer.RegisterTagMapping("tag:yaml.org,2002:child", typeof(Child));
var items = deserializer.Deserialize<Ser>(...);