<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.0-preview.1.25080.5" />

ConfigurationManager

public static class ConfigurationManager
Provides access to configuration files for client applications. This class cannot be inherited.
using System.Collections.Specialized; using System.Configuration.Internal; namespace System.Configuration { public static class ConfigurationManager { private enum InitState { NotStarted, Started, Usable, Completed } private static volatile IInternalConfigSystem s_configSystem; private static volatile InitState s_initState = InitState.NotStarted; private static readonly object s_initLock = new object(); private static volatile Exception s_initError; internal static bool SetConfigurationSystemInProgress { get { if (InitState.NotStarted < s_initState) return s_initState < InitState.Completed; return false; } } internal static bool SupportsUserConfig { get { PrepareConfigSystem(); return s_configSystem.SupportsUserConfig; } } public static NameValueCollection AppSettings { get { object section = GetSection("appSettings"); if (!(section is NameValueCollection)) throw new ConfigurationErrorsException(System.SR.Config_appsettings_declaration_invalid); return (NameValueCollection)section; } } public static ConnectionStringSettingsCollection ConnectionStrings { get { object section = GetSection("connectionStrings"); if (section == null || section.GetType() != typeof(ConnectionStringsSection)) throw new ConfigurationErrorsException(System.SR.Config_connectionstrings_declaration_invalid); return ((ConnectionStringsSection)section).ConnectionStrings; } } internal static void SetConfigurationSystem(IInternalConfigSystem configSystem, bool initComplete) { lock (s_initLock) { if (s_initState != 0) throw new InvalidOperationException(System.SR.Config_system_already_set); s_configSystem = configSystem; s_initState = (initComplete ? InitState.Completed : InitState.Usable); } } private static void EnsureConfigurationSystem() { lock (s_initLock) { if (s_initState < InitState.Usable) { s_initState = InitState.Started; try { try { s_configSystem = new ClientConfigurationSystem(); s_initState = InitState.Usable; } catch (Exception inner) { s_initError = new ConfigurationErrorsException(System.SR.Config_client_config_init_error, inner); throw s_initError; } } catch { s_initState = InitState.Completed; throw; } } } } internal static void SetInitError(Exception initError) { s_initError = initError; } internal static void CompleteConfigInit() { lock (s_initLock) { s_initState = InitState.Completed; } } private static void PrepareConfigSystem() { if (s_initState < InitState.Usable) EnsureConfigurationSystem(); if (s_initError != null) throw s_initError; } public static object GetSection(string sectionName) { if (string.IsNullOrEmpty(sectionName)) return null; PrepareConfigSystem(); return s_configSystem.GetSection(sectionName); } public static void RefreshSection(string sectionName) { if (!string.IsNullOrEmpty(sectionName)) { PrepareConfigSystem(); s_configSystem.RefreshConfig(sectionName); } } public static Configuration OpenMachineConfiguration() { return OpenExeConfigurationImpl(null, true, ConfigurationUserLevel.None, null, false); } public static Configuration OpenMappedMachineConfiguration(ConfigurationFileMap fileMap) { return OpenExeConfigurationImpl(fileMap, true, ConfigurationUserLevel.None, null, false); } public static Configuration OpenExeConfiguration(ConfigurationUserLevel userLevel) { return OpenExeConfigurationImpl(null, false, userLevel, null, false); } public static Configuration OpenExeConfiguration(string exePath) { return OpenExeConfigurationImpl(null, false, ConfigurationUserLevel.None, exePath, false); } public static Configuration OpenMappedExeConfiguration(ExeConfigurationFileMap fileMap, ConfigurationUserLevel userLevel) { return OpenExeConfigurationImpl(fileMap, false, userLevel, null, false); } public static Configuration OpenMappedExeConfiguration(ExeConfigurationFileMap fileMap, ConfigurationUserLevel userLevel, bool preLoad) { return OpenExeConfigurationImpl(fileMap, false, userLevel, null, preLoad); } private static Configuration OpenExeConfigurationImpl(ConfigurationFileMap fileMap, bool isMachine, ConfigurationUserLevel userLevel, string exePath, bool preLoad = false) { if (!isMachine && ((fileMap == null && exePath == null) || (fileMap != null && ((ExeConfigurationFileMap)fileMap).ExeConfigFilename == null)) && s_configSystem != null && s_configSystem.GetType() != typeof(ClientConfigurationSystem)) throw new ArgumentException(System.SR.Config_configmanager_open_noexe); Configuration configuration = ClientConfigurationHost.OpenExeConfiguration(fileMap, isMachine, userLevel, exePath); if (preLoad) PreloadConfiguration(configuration); return configuration; } private static void PreloadConfiguration(Configuration configuration) { if (configuration != null) { foreach (ConfigurationSection section in configuration.Sections) { ConfigurationSection configurationSection = section; } foreach (ConfigurationSectionGroup sectionGroup in configuration.SectionGroups) { PreloadConfigurationSectionGroup(sectionGroup); } } } private static void PreloadConfigurationSectionGroup(ConfigurationSectionGroup sectionGroup) { if (sectionGroup != null) { foreach (ConfigurationSection section in sectionGroup.Sections) { ConfigurationSection configurationSection = section; } foreach (ConfigurationSectionGroup sectionGroup2 in sectionGroup.SectionGroups) { PreloadConfigurationSectionGroup(sectionGroup2); } } } } }