ConfigJsonHelper.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using Microsoft.Extensions.Configuration;
  3. using Microsoft.Extensions.Configuration.Json;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.Extensions.Options;
  6. namespace QM.Gateway
  7. {
  8. /// <summary>
  9. /// 读取配置文件信息
  10. /// </summary>
  11. public class ConfigJsonHelper
  12. {
  13. public static IConfiguration Configuration { get; set; }
  14. static ConfigJsonHelper()
  15. {
  16. //ReloadOnChange = true当appsettings.json被修改时重新加载
  17. Configuration = new ConfigurationBuilder()
  18. .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
  19. .Build();
  20. }
  21. /// <summary>
  22. /// 获得配置文件的对象值
  23. /// </summary>
  24. /// <param name="jsonPath"></param>
  25. /// <param name="key"></param>
  26. /// <returns></returns>
  27. public static string GetJson(string jsonPath, string key)
  28. {
  29. IConfiguration config = new ConfigurationBuilder().AddJsonFile(jsonPath).Build(); //json文件地址
  30. string s = config.GetSection(key).Value; //json某个对象
  31. return s;
  32. }
  33. /// <summary>
  34. /// 根据配置文件和Key获得对象
  35. /// </summary>
  36. /// <typeparam name="T"></typeparam>
  37. /// <param name="fileName">文件名称</param>
  38. /// <param name="key">节点Key</param>
  39. /// <returns></returns>
  40. public static T GetAppSettings<T>(string fileName, string key) where T : class, new()
  41. {
  42. var baseDir = AppContext.BaseDirectory + "json/";
  43. var currentClassDir = baseDir;
  44. IConfiguration config = new ConfigurationBuilder()
  45. .SetBasePath(currentClassDir)
  46. .Add(new JsonConfigurationSource { Path = fileName, Optional = false, ReloadOnChange = true })
  47. .Build();
  48. var appconfig = new ServiceCollection().AddOptions()
  49. .Configure<T>(config.GetSection(key))
  50. .BuildServiceProvider()
  51. .GetService<IOptions<T>>()
  52. .Value;
  53. return appconfig;
  54. }
  55. }
  56. }