AppSettings.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. try
  44. {
  45. if (Configuration != null && sections.Any())
  46. {
  47. Configuration.Bind(string.Join(":", sections), list);
  48. }
  49. }
  50. catch
  51. {
  52. return list;
  53. }
  54. return list;
  55. }
  56. public static T Bind<T>(string key, T t)
  57. {
  58. Configuration.Bind(key, t);
  59. return t;
  60. }
  61. public static T GetAppConfig<T>(string key, T defaultValue = default)
  62. {
  63. T setting = (T)Convert.ChangeType(Configuration[key], typeof(T));
  64. var value = setting;
  65. if (setting == null)
  66. value = defaultValue;
  67. return value;
  68. }
  69. /// <summary>
  70. /// 获取配置文件
  71. /// </summary>
  72. /// <param name="key">eg: WeChat:Token</param>
  73. /// <returns></returns>
  74. public static string GetConfig(string key)
  75. {
  76. return Configuration[key];
  77. }
  78. /// <summary>
  79. /// 获取配置节点并转换成指定类型
  80. /// </summary>
  81. /// <typeparam name="T">节点类型</typeparam>
  82. /// <param name="key">节点路径</param>
  83. /// <returns>节点类型实例</returns>
  84. public static T Get<T>(string key)
  85. {
  86. return Configuration.GetSection(key).Get<T>();
  87. }
  88. }
  89. }