• Asp.NetCore 读取配置文件帮助类


    /// <summary>
        /// 读取配置文件信息
        /// </summary>
        public class ConfigExtensions
        {
            public static IConfiguration Configuration { get; set; }
            static ConfigExtensions()
            {
                Configuration = new ConfigurationBuilder()
                     .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
                     .Build();
            }
            /// <summary>
            /// 获得配置文件的对象值
            /// </summary>
            /// <param name="jsonPath"></param>
            /// <param name="key"></param>
            /// <returns></returns>
            public static string GetJson(string jsonPath, string key)
            {
                if (string.IsNullOrEmpty(jsonPath) || string.IsNullOrEmpty(key)) return null;
                IConfiguration config = new ConfigurationBuilder().AddJsonFile(jsonPath).Build();//json文件地址
                return config.GetSection(key).Value;//json某个对象
            }
            /// <summary>
            /// 根据配置文件和Key获得对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="fileName">文件名称</param>
            /// <param name="key">节点Key</param>
            /// <returns></returns>
            public static T GetAppSettings<T>(string fileName, string key) where T : class, new()
            {
                if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(key)) return null;
                var baseDir = AppContext.BaseDirectory + "json/";
                var currentClassDir = baseDir;
     
                IConfiguration config = new ConfigurationBuilder()
                    .SetBasePath(currentClassDir)
                    .Add(new JsonConfigurationSource
                    {
                        Path = fileName,
                        Optional = false,
                        ReloadOnChange = true
                    }).Build();
                var appconfig = new ServiceCollection().AddOptions()
                   .Configure<T>(config.GetSection(key))
                   .BuildServiceProvider()
                   .GetService<IOptions<T>>()
                   .Value;
                return appconfig;
            }
     
            /// <summary>
            /// 获取自定义配置文件配置
            /// </summary>
            /// <typeparam name="T">配置模型</typeparam>
            /// <param name="key">根节点</param>
            /// <param name="configPath">配置文件名称</param>
            /// <returns></returns>
            public T GetAppSettingss<T>(string key, string configPath) where T : class, new()
            {
                if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(configPath)) return null;
                IConfiguration config = new ConfigurationBuilder().Add
                    (new JsonConfigurationSource { Path = configPath, ReloadOnChange = true }).Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return appconfig;
            }
            /// <summary>
            /// 获取自定义配置文件配置(异步方式)
            /// </summary>
            /// <typeparam name="T">配置模型</typeparam>
            /// <param name="key">根节点</param>
            /// <param name="configPath">配置文件名称</param>
            /// <returns></returns>
            public async Task<T> GetAppSettingsAsync<T>(string key, string configPath) where T : class, new()
            {
                if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(configPath)) return null;
                IConfiguration config = new ConfigurationBuilder()
                    .Add(new JsonConfigurationSource
                    {
                        Path = configPath,
                        ReloadOnChange = true
                    }).Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<T>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<T>>()
                    .Value;
                return await Task.Run(() => appconfig);
            }
            /// <summary>
            /// 获取自定义配置文件配置
            /// </summary>
            /// <typeparam name="T">配置模型</typeparam>
            /// <param name="key">根节点</param>
            /// <param name="configPath">配置文件名称</param>
            /// <returns></returns>
            public List<T> GetListAppSettings<T>(string key, string configPath) where T : class, new()
            {
                if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(configPath)) return null;
                IConfiguration config = new ConfigurationBuilder()
                    .Add(new JsonConfigurationSource { Path = configPath, ReloadOnChange = true }).Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<List<T>>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<List<T>>>()
                    .Value;
                return appconfig;
            }
     
            /// <summary>
            /// 获取自定义配置文件配置(异步方式)
            /// </summary>
            /// <typeparam name="T">配置模型</typeparam>
            /// <param name="key">根节点</param>
            /// <param name="configPath">配置文件名称</param>
            /// <returns></returns>
            public async Task<List<T>> GetListAppSettingsAsync<T>(string key, string configPath) where T : class, new()
            {
                if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(configPath)) return null;
                IConfiguration config = new ConfigurationBuilder()
                    .Add(new JsonConfigurationSource { Path = configPath, ReloadOnChange = true })
                    .Build();
                var appconfig = new ServiceCollection()
                    .AddOptions()
                    .Configure<List<T>>(config.GetSection(key))
                    .BuildServiceProvider()
                    .GetService<IOptions<List<T>>>()
                    .Value;
                return await Task.Run(() => appconfig);
            }
        }
    

      

  • 相关阅读:
    p1706 全排列
    2089烤鸡(类似于选数问题)
    1036选数
    bfs
    A-E
    A-3
    百题A-2
    百题A-1
    二级概念题
    随记
  • 原文地址:https://www.cnblogs.com/smartsmile/p/11721544.html
Copyright © 2020-2023  润新知