Как включить синтаксический анализ yaml с помощью yamldotnet, который принимает пары list и keyvalue под одним именем? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть yaml, в котором допустимы оба следующих формата -

  args:
    buildno: 1
    gitcommithash: cdc3b19

И

  args:
    - buildno=1
    - gitcommithash=cdc3b19

При текущей конфигурации YamlDotnet,

[YamlMember(Alias = "args")]
public Dictionary<string, string> Args { get; set; }

Я могу разобрать, когда yaml имеет формат №. 1. Как я могу изменить свой код YamlDotNet, чтобы он принимал оба формата? т.е. принимать список, а также словарь для аргументов?

1 Ответ

0 голосов
/ 02 октября 2019

Самый простой способ сделать это - создать класс, который реализует IDictionary<string, string> и IList<string>. Вы можете попробовать наследовать от Dictionary<string, string> и реализовать интерфейс списка. Я думаю, что было бы достаточно реализовать метод Add из IList, в котором вы разделяете строку на символ = и добавляете в словарь.

Существуют другие способы, но это самый простой.

...