using Microsoft.Extensions.Configuration; namespace Kit.Helpers { public interface IConfigurationItem { DateTime FillDate { get; set; } void Init(IConfiguration configuration); } public class ConfigurationHelper { private readonly string _prefix; private readonly IConfiguration _configuration; public ConfigurationHelper(IConfiguration configuration) : this(configuration, string.Empty) { _configuration = configuration; } public ConfigurationHelper(IConfiguration configuration, string prefix) { _configuration = configuration; _prefix = prefix; } private string CreateKey(string itemKey) { return string.IsNullOrEmpty(_prefix) ? itemKey.ToString() : (_prefix + ":" + itemKey); } public string GetConnectionString(string name, bool required = true) { string text = CreateKey(name); string connectionString = _configuration.GetConnectionString(text); if (required) { Check.StringArgumentIsNotNullOrEmpty(connectionString, null, "connection string not set in config. name=" + text); } return connectionString; } public string GetAppSettingValue(object settingsItemKey, bool required = true, string defaultValue = null) { string text = CreateKey(settingsItemKey.ToString()); string text2 = _configuration[text] ?? defaultValue; if (required && string.IsNullOrWhiteSpace(text2)) { throw new Exception(text + " not set in appSettings section"); } return text2; } public IConfigurationSection GetSection(string name, bool required = true) { string appSettingsKey; return GetSection(name, required, out appSettingsKey); } public IConfigurationSection GetSection(string name, bool required, out string appSettingsKey) { appSettingsKey = CreateKey(name.ToString()); if (required) { return _configuration.GetRequiredSection(appSettingsKey); } return _configuration.GetSection(appSettingsKey); } public TEntity Get(string name) { string key = CreateKey(name.ToString()); return _configuration.GetSection(key).Get(); } } }