Десериализация yaml в C#
У меня есть ряд файлов yaml с плохо реализованной структурой, которые мне нужно проанализировать в C#. Схема напоминает:
Root:
KnownTypeA:
VariableNameLevel3A:
VariableNameLevel4A:
KnownTypeAPropertyA: Bar
KnownTypeAPropertyB: Bar
KnownTypeAPropertyZ: Bar
KnownTypeB:
VariableNameLevel3B:
VariableNameLevel4B:
KnownTypeBPropertyA: Baz
KnownTypeBPropertyB: Baz
KnownTypeBPropertyZ: Baz
KnownTypeZ:
VariableNameLevel3C:
- Foo
- Foo
- Foo
SomePropertyA: Foo
SomePropertyA: Bar
SomePropertyA: Baz
Дети Root
может быть ноль или более известных значений, KnownTypeA..Z
, Следующие 2 уровня потомков являются произвольными значениями, VariableNameLevel3A..Z
а также VariableNameLevel4A..Z
, Последний уровень коллекций ключей / значений сопоставляется с моделью, описанной родителем на уровне 2, KnownTypeA..Z
, Коллекции свойств не являются включающими и обычно пропускают один или несколько.
Наконец, первый уровень может иметь другие коллекции ключей / значений ниже известных Root
узел интереса.
Я посмотрел на реализации C# yaml, и кажется, что yamldotnet является наиболее поддерживаемым, однако ему не хватает документации. Разбор этого беспорядка вручную - единственная альтернатива или кто-нибудь знает о реализации, которая может дать некоторое представление о подходе с моделями, в которых десериализатор может применить наиболее подходящую модель к VariableNameLevel4x
коллекции?