AppSettings.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Microsoft.Extensions.Configuration;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. namespace Infrastructure
  6. {
  7. public class AppSettings
  8. {
  9. static IConfiguration Configuration { get; set; }
  10. public AppSettings(IConfiguration configuration)
  11. {
  12. Configuration = configuration;
  13. }
  14. /// <summary>
  15. /// 封装要操作的字符
  16. /// </summary>
  17. /// <param name="sections">节点配置</param>
  18. /// <returns></returns>
  19. public static string App(params string[] sections)
  20. {
  21. try
  22. {
  23. if (sections.Any())
  24. {
  25. return Configuration[string.Join(":", sections)];
  26. }
  27. }
  28. catch (Exception ex)
  29. {
  30. Console.WriteLine(ex.Message);
  31. }
  32. return "";
  33. }
  34. /// <summary>
  35. /// 递归获取配置信息数组
  36. /// </summary>
  37. /// <typeparam name="T"></typeparam>
  38. /// <param name="sections"></param>
  39. /// <returns></returns>
  40. public static List<T> App<T>(params string[] sections)
  41. {
  42. List<T> list = new();
  43. // 引用 Microsoft.Extensions.Configuration.Binder 包
  44. Configuration.Bind(string.Join(":", sections), list);
  45. return list;
  46. }
  47. public static T Bind<T>(string key, T t)
  48. {
  49. Configuration.Bind(key, t);
  50. return t;
  51. }
  52. public static T GetAppConfig<T>(string key, T defaultValue = default)
  53. {
  54. T setting = (T)Convert.ChangeType(Configuration[key], typeof(T));
  55. var value = setting;
  56. if (setting == null)
  57. value = defaultValue;
  58. return value;
  59. }
  60. /// <summary>
  61. /// 获取配置文件
  62. /// </summary>
  63. /// <param name="key">eg: WeChat:Token</param>
  64. /// <returns></returns>
  65. public static string GetConfig(string key)
  66. {
  67. return Configuration[key];
  68. }
  69. }
  70. }