Десериализовать иерархию объектов в 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). Это просто не поддерживается или я что-то упустил?