VEU.WathBody/3-app/1-lib/Kit.Helpers/ConfigurationHelper.cs

81 lines
2.5 KiB
C#

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<TEntity>(string name)
{
string key = CreateKey(name.ToString());
return _configuration.GetSection(key).Get<TEntity>();
}
}
}