using System; using System.Collections.Specialized; using System.Configuration; namespace Config.Net.Stores { /// /// Standard app.config (web.config) configuration store. Read-only. /// class AppConfigStore : IConfigStore { public string Name => "App.config"; public bool CanRead => true; public bool CanWrite => false; public string? Read(string key) { if(key == null) return null; //first, look at appsettings and connection strings string? value = ConfigurationManager.AppSettings[key] ?? ConfigurationManager.ConnectionStrings[key]?.ConnectionString; if(value == null) { int idx = key.IndexOf('.'); if(idx != -1) { string sectionName = key.Substring(0, idx); if(ConfigurationManager.GetSection(sectionName) is NameValueCollection nvsc) { string keyName = key.Substring(idx + 1); value = nvsc[keyName]; } } } return value; } public void Write(string key, string? value) => throw new NotSupportedException(); public void Dispose() { } } }