81 lines
2.5 KiB
C#
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>();
|
|
}
|
|
}
|
|
} |