在使用ASP.NET core进行web开发的时候,appsetting.json文件是非常重要的一个配置文件,除了一些系统默认的配置,我们也可以在其中加入自定义配置,或者增加其他扩展的配置,例如:Nlog日志记录配置等,现在封装一个静态类,方便使用
包含一个私有属性为配置对象,两个扩展方法用来修改或者使用其他配置文件,两个静态方法用来访问配置文件,一个直接访问对应节点的值,一个用来将配置节点转换成对应的数据模型,需要数据模型属性与节点一一对应。
/// <summary>
/// .net core的配置导入
/// </summary>
public static class ConfigProvider
{
/// <summary>
/// 配置对象
/// </summary>
public static IConfiguration Configuration { get; private set; } = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json", true, true).Build();
/// <summary>
/// 使用自定义配置,若未调用,将自动加载默认的appsettings.json
/// </summary>
/// <param name="origin">需要使用的Config配置对象</param>
public static void AddToMasuitTools(this IConfiguration origin)
{
Configuration = origin;
}
/// <summary>
/// 使用自定义配置文件,若未调用,将自动加载默认的appsettings.json
/// <para>默认</para>
/// </summary>
/// <param name="origin">配置文件名</param>
public static void AddToMasuitTools(this string origin)
{
Configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile(origin, true, true).Build();
}
/// <summary>
/// 获取配置节
/// </summary>
/// <param name="key">节点名称</param>
/// <param name="defaultValue">节点默认值</param>
/// <returns>若节点为空,则返回默认值</returns>
public static string GetConfigOrDefault(string key, string defaultValue = "")
{
string config = Configuration[key];
return config.IsNullOrEmpty() ? defaultValue : config;
}
/// <summary>
/// 获取配置节点信息
/// </summary>
/// <typeparam name="T">配置节对应模型</typeparam>
/// <param name="key">配置节名称</param>
/// <returns>配置节类型</returns>
public static T GetConfig<T>(string key) where T : class
{
var config = Configuration.GetSection(key);
Type dataType = typeof(T);
var data = Activator.CreateInstance(dataType) as T;
foreach (var item in dataType.GetProperties())
{
item.SetValue(data, GetConfigOrDefault(key + ":" + item.Name)?.ChangeType(item.PropertyType));
}
return data;
}
}