У меня проблема с созданием файла конфигурации для класса, который включает список объектов, реализующих тот же интерфейс, когда я использую API YamlStream.
Я хочу сохранить локальные теги, которые я поместил в элементы списка, чтобы их можно было правильно десериализовать из другого контекста. В моем реальном проекте мне необходимо выполнить некоторую предварительную обработку узлов YamlNode. Однако, когда я хочу сериализовать YamlDocument в файл, теги локального типа теряются. Я вижу, что теги анализируются при преобразовании в YamlStream (для некоторых узлов свойство Tag установлено соответствующим образом). Однако после обработки они сериализуются без тегов.
У меня есть несколько примеров того, что я попробовал в этом репо: https://github.com/mariotee/YamlDotNetIssue
var stream = new YamlStream();
stream.Load(new StringReader(yaml));
//pre processing would go here
using (var wr = new StringWriter())
{
stream.Save(wr, false);
File.WriteAllText("path", wr.ToString());
}
ожидаемый результат:
pets:
- !Cat
name: skippy
likesMilk: true
- !Cat
name: felix
likesMilk: true
- !Dog
name: ralf
likesBones: true
- !Hamster
name: Hamtaro
likesTv: true
...
фактический результат:
pets:
- name: skippy
likesMilk: true
- name: felix
likesMilk: true
- name: ralf
likesBones: true
- name: Hamtaro
likesTv: true
...