给 IConfiguration 写一个 GetAppSetting 扩展方法

给 IConfiguration 写一个 GetAppSetting 扩展方法

Intro

在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等。

在 .net core 中有一个 GetConnectionString 的扩展方法用来比较方便的获取链接字符串,类似于在 .net framework 中使用 ConfigurationManager.ConnectionStrings["key"] 来获取链接字符串。

这次来参考 GetConnectionString 实现一个 GetAppSetting,类似于 .net framework 中使用 ConfigurationManager.AppSettings 来获取配置值。

实现代码

GetConnectionString 是获取 ConnectionStrings 这个节点下的某个配置, GetAppSetting 来获取 AppSettings 这个节点下的某个配置

实现代码:


   
   
  1. /// <summary>

  2. /// GetAppSetting

  3. /// Shorthand for GetSection("AppSettings")[key]

  4. /// </summary>

  5. /// <param name="configuration">IConfiguration instance</param>

  6. /// <param name="key">appSettings key</param>

  7. /// <returns>app setting value</returns>

  8. public static string GetAppSetting([NotNull]this IConfiguration configuration, string key)

  9. {

  10. return configuration.GetSection("AppSettings")[key];

  11. }

  12. /// <summary>

  13. /// GetAppSetting

  14. /// Shorthand for GetSection("AppSettings")[key]

  15. /// </summary>

  16. /// <param name="configuration">IConfiguration instance</param>

  17. /// <param name="key">appSettings key</param>

  18. /// <returns>app setting value</returns>

  19. public static T GetAppSetting<T>([NotNull]this IConfiguration configuration, string key)

  20. {

  21. return configuration.GetSection("AppSettings")[key].To<T>();

  22. }

  23. /// <summary>

  24. /// GetAppSetting

  25. /// Shorthand for GetSection("AppSettings")[key]

  26. /// </summary>

  27. /// <param name="configuration">IConfiguration instance</param>

  28. /// <param name="key">appSettings key</param>

  29. /// <param name="defaultValue">default value if not exist</param>

  30. /// <returns>app setting value</returns>

  31. public static T GetAppSetting<T>([NotNull] this IConfiguration configuration, string key, T defaultValue)

  32. {

  33. return configuration.GetSection("AppSettings")[key].ToOrDefault(defaultValue);

  34. }

  35. /// <summary>

  36. /// GetAppSetting

  37. /// Shorthand for GetSection("AppSettings")[key]

  38. /// </summary>

  39. /// <param name="configuration">IConfiguration instance</param>

  40. /// <param name="key">appSettings key</param>

  41. /// <param name="defaultValueFunc">default value func if not exist to get a default value</param>

  42. /// <returns>app setting value</returns>

  43. public static T GetAppSetting<T>([NotNull] this IConfiguration configuration, string key, Func<T> defaultValueFunc)

  44. {

  45. return configuration.GetSection("AppSettings")[key].ToOrDefault(defaultValueFunc);

  46. }

查看源码

使用

使用起来和 GetConnectionString 差不多

测试 appsettings.json


   
   
  1. {

  2. "ConnectionStrings": {

  3. "TestDb": "server=.;database=Test;uid=weihanli;pwd=Admin888"

  4. },

  5. "AppSettings":{

  6. "Number": 12,

  7. "City": "Shanghai"

  8. }

  9. }

GetAppSetting 示例


   
   
  1. IConfiguration configuration = new ConfigurationBuilder()

  2. // ...

  3. .AddJsonFile("appsettings.json")

  4. .Build();

  5. var city = configuration.GetAppSetting("City");

  6. var number = configuration.GetAppSetting<int>("Number");

  7. System.Console.WriteLine($"City:{city}, Number:{number}");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值