<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="6.0.0-rc.1.21451.13" />

ConfigurationExtensions

public static class ConfigurationExtensions
Extension methods for configuration classes.
using System; using System.Collections.Generic; using System.Linq; namespace Microsoft.Extensions.Configuration { public static class ConfigurationExtensions { public static IConfigurationBuilder Add<TSource>(this IConfigurationBuilder builder, Action<TSource> configureSource) where TSource : IConfigurationSource, new { TSource val = new TSource(); configureSource?.Invoke(val); return builder.Add((IConfigurationSource)(object)val); } public static string GetConnectionString(this IConfiguration configuration, string name) { return configuration?.GetSection("ConnectionStrings")?[name]; } public static IEnumerable<KeyValuePair<string, string>> AsEnumerable(this IConfiguration configuration) { return configuration.AsEnumerable(false); } public static IEnumerable<KeyValuePair<string, string>> AsEnumerable(this IConfiguration configuration, bool makePathsRelative) { Stack<IConfiguration> stack = new Stack<IConfiguration>(); stack.Push(configuration); IConfigurationSection configurationSection = configuration as IConfigurationSection; int prefixLength = (makePathsRelative && configurationSection != null) ? (configurationSection.Path.Length + 1) : 0; while (stack.Count > 0) { IConfiguration config = stack.Pop(); IConfigurationSection configurationSection2 = config as IConfigurationSection; if (configurationSection2 != null && (!makePathsRelative || config != configuration)) yield return new KeyValuePair<string, string>(configurationSection2.Path.Substring(prefixLength), configurationSection2.Value); foreach (IConfigurationSection child in config.GetChildren()) { stack.Push(child); } } } public static bool Exists(this IConfigurationSection section) { if (section == null) return false; if (section.Value == null) return section.GetChildren().Any(); return true; } public static IConfigurationSection GetRequiredSection(this IConfiguration configuration, string key) { if (configuration == null) throw new ArgumentNullException("configuration"); IConfigurationSection section = configuration.GetSection(key); if (section.Exists()) return section; throw new InvalidOperationException(System.SR.Format(System.SR.InvalidSectionName, key)); } } }