Как проанализировать YAML с помощью ключа слияния и переопределения в YamlDotNet? - PullRequest
0 голосов
/ 26 февраля 2019

Согласно этому ответу от 2014 года https://stackoverflow.com/a/18900623/166707, YamlDotNet поддерживает ключи слияния и переопределяющие значения.Но когда я запускаю следующий код, я получаю ошибку дублированного ключа:

Необработанное исключение: YamlDotNet.Core.YamlException: (строка: 4, столбец: 5, Idx: 40) - (строка: 4, Col: 9, Idx: 44): дубликат ключа ---> System.ArgumentException: элемент с таким же ключом уже добавлен.Key: key1

Приведенный ниже код отличается от связанного ответа, так как API YamlDotNet, по-видимому, эволюционировал за последние 4 года, и это, по-видимому, каноническое использование.Это все еще возможно?Как мне использовать API, чтобы это работало?

using System;
using System.IO;
using YamlDotNet.Core;
using YamlDotNet.RepresentationModel;

namespace Dummy.ParseYaml
{
    class Program
    {
        static string DUMMY_YAML = @"---
aliases:
  globals: &globals
    key1: 'value1'
    key2: 'value2'
  contexts:
    context1:
      <<: *globals
    context2:
      key1: 'override'
      <<: *globals
";
        static void Main(string[] args)
        {
            var mergingParser = new MergingParser(new Parser(new StringReader(DUMMY_YAML)));
            var yamlStream = new YamlStream();
            yamlStream.Load(mergingParser);
        }
    }
}
...