Согласно этому ответу от 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);
}
}
}