Как десериализовать детские классы?

У меня есть список, который содержит элементы одного базового класса, но разных дочерних классов. Как я могу десериализовать это?

Например

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>(...);

Я собрал здесь рабочую скрипку

Другие вопросы по тегам