Десериализовать иерархию объектов в YAMLDotNet

Я использую YamlDotNet, и он работает довольно хорошо. У меня есть быстрый вопрос о сериализации деревьев объектов, хотя. Например, у меня есть

class A {
   [YamlMember(Alias = "p1")]
   public string P1 { get; set; }
}

Тогда я хочу наследовать от A так:

class B : A {
   [YamlMember(Alias = "p2")]
   public string P2 { get; set; }
}

Наконец, я создал объект документа следующим образом:

class D {
   [YamlMember(Alias = "a")]
   public A InputA { get; set; }

   [YamlMember(Alias = "b")]
   public B InputB { get; set; }
}

Я десериализовал следующий Yaml:

a:
  p1: foo
b:
  p1: foo
  p2: bar

Используя следующий код:

 var ds = new Deserializer();
 var d = ds.Deserialize<D>(reader);

Удивительно, но я обнаружил, что:

 d.InputB.P1 == null

Это будет хорошо работать в JSON (хотя я использовал только Джексона в Java). Это просто не поддерживается или я что-то упустил?

0 ответов

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