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); } }