在使用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;
     }


 }

文章信息

创建时间
2023-12-13
作者
郭铭心
是否所有人可见
所有人可见
最后修改日期
2023-12-13
点击数
382