/// <inheritdoc /> public override void Load(Stream stream) { _configurationProvider.Load(stream); // Получим список ключей var keys = _configurationProvider.GetKeys(); bool IsIncludeKey(string key) => key.EndsWith("${include}"); bool IsNotIncludeKey(string key) => !IsIncludeKey(key); // Ключи с ${include} var keysWithIncludes = keys.Where(IsIncludeKey).ToArray(); if (keysWithIncludes.Length > 0) { foreach (var include in keysWithIncludes) { if (_configurationProvider.TryGet(include, out string includePath)) { var path = Path.Combine(_rootPath, includePath); var fullPath = Path.GetFullPath(path); // Создадим провайдер конфигурации и загрузим значения из него var jsonConfigurationProvider = CreateConfigurationProvider(fullPath); jsonConfigurationProvider.Load(); // Получим все ключи var keysToInclude = jsonConfigurationProvider.GetKeys(); // Добавим все данные из подгруженного файла jsonConfigurationProvider.AddValuesToDictionary(keysToInclude, Data); } } // Добавим ключи, которые были в базовом провайдере var otherKeys = keys.Where(IsNotIncludeKey).ToArray(); _configurationProvider.AddValuesToDictionary(otherKeys, Data); } else { // Добавим ключи, которые были в базовом провайдере _configurationProvider.AddValuesToDictionary(keys, Data); } }
public bool TryGet(string key, out string value) { return(_provider.TryGet(key, out value)); }