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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ASP.NET Core 3.x 构建 RESTful API - 3.2 路由

路由机制会把一个请求的URI映射到一个Controller上面的Action&#xff0c;所以当你发送一个HTTP请求的时候&#xff0c;MVC框架会解析这个请求的URI&#xff0c;并尝试着把它映射到一个Controller上面的Action。两个路由中间件在ASP.NET Core 3.x里面&#xff0c;建议使用Endpo…

EFCore批量操作,你真的清楚吗

背景EntityFramework Core有许多新的特性&#xff0c;其中一个重要特性便是批量操作。批量操作意味着不需要为每次Insert/Update/Delete操作发送单独的命令&#xff0c;而是在一次SQL请求中发送批量组合指令。EFCore批量操作实践批处理是期待已久的功能&#xff0c;社区多次提出…

asp.net core 自定义 Policy 替换 AllowAnonymous 的行为

asp.net core 自定义 Policy 替换 AllowAnonymous 的行为Intro最近对我们的服务进行了改造&#xff0c;原本内部服务在内部可以匿名调用&#xff0c;现在增加了限制&#xff0c;通过 identity server 来管理 api 和 client&#xff0c;网关和需要访问api的客户端或api服务相互调…

前端小白在asp.net core mvc中使用ECharts

对于在浏览器中绘制图形图表&#xff0c;目前有较多的js类库可以使用&#xff0c;如&#xff1a;ChartJS&#xff0c;Flot&#xff0c;canvasjs等&#xff0c;但是今天介绍的主角为国产图表库&#xff0c;并在apache孵化&#xff0c;就是大名鼎鼎的echarts。前方高能【官方介绍…

超过1w的Github Star大佬和他们的公众号,太强了!

不少同学担忧的情况——“晋升无望、收入见顶、生活开支飙升、财务危机如影随形”&#xff0c;小编精心挑选了几个优质原创技术号&#xff0c;推荐给大家化解成长的烦恼。他们都是我平时关注的优秀号主&#xff0c;分享给大家&#xff0c;助大家学习路上披荆斩棘~Python爱好者社…

C# 结合 Golang 开发

1. 实现方式与语法形式基本方式&#xff1a;将 Go 程序编译成 DLL 供 C# 调用。1.1 Go代码注意&#xff1a;代码中 export 的注释是定义的入口描述不能省略package mainimport "C"import "fmt"func main() { fmt.Println(Test())}var _count 0//Test :…

Java和C++区别

Java和C的区别有很多&#xff0c;主要集中在如下几个方面&#xff1a; 运行机制 Java&#xff1a; 编写&#xff1a;是指在Java开发环境&#xff08;Eclipse、Sublime等&#xff09;中进行程序代码的输入&#xff0c;最终形成后缀名为.java的Java源文件。 编译&#xff1a;是指…

未雨绸缪 | 一文简介 Azure Front Door

点击上方蓝字关注“汪宇杰博客”导语昨天早晨微软服务器发生了核爆&#xff0c;Office 365&#xff0c;Bing&#xff0c;Azure DevOps全线完蛋。人类文明危在旦夕之际&#xff0c;微软美国的死士凌晨2点爬起来收福报&#xff0c;修好了服务器&#xff0c;拯救了全人类&#xff…

Linux下管理员权限获取(su和sudo的区别)

我们知道&#xff0c;在Linux下对很多文件进行修改都需要有root&#xff08;管理员&#xff09;权限&#xff0c;比如对/ect/profile等文件的修改。很多情况下&#xff0c;我们在进行开发的时候都是使用普通用户进行登录的&#xff0c;尤其在进行一些环境变量的配置工作时&…

左手专注,右手时间

大家好&#xff0c;我是Z哥。今天带来的是一篇有感而发的随笔&#xff0c;敬请品尝&#xff5e;前两天最火的事情莫过于WPS上市了。这个平时默默无闻、低调的可怕的产品一下子被捧上了天。我第一次接触到WPS还比较晚&#xff0c;大约在2014年的样子&#xff0c;当时由于某些特殊…

Linux下Java环境变量配置

在Java开发中&#xff0c;在安装完jdk之后&#xff0c;首先需要做的工作就是进行Java环境变量配置。在Windows下的配置我们都比较熟悉&#xff0c;图形化界面配置起来也相对容易&#xff08;详见&#xff1a;Windows7下环境变量配置&#xff09;&#xff0c;接下来我们就来了解…

说说开源那些事儿

“ 阅读本文大概需要 9 分钟。 ”前段时间我们遇到了一个情况&#xff0c;课程推送发出来之后有位同学在群里提到&#xff0c;机构提供的项目就是他同学导师的开源项目。之后这位导师在文章评论里联系了我&#xff0c;表示该机构课程涉嫌开源侵权他的 GitHub 开源项目。我们后台…

Linux下Tomcat安装和配置

1、前提&#xff08;JDK环境&#xff09;Tomcat的安装需要JDK环境&#xff0c;如何配置JDK环境见我的文章Linux下Java环境配置&#xff0c;所以在安装Tomcat之前需要先检测JDK环境是否配置好。 进入命令行界面&#xff0c;输入java -version命令来查看JDK环境是否配置成功&…

ASP.NET Core快速入门(第1章:介绍与引入)--学习笔记

点击蓝字关注我们课程链接&#xff1a;http://video.jessetalk.cn/course/explore良心课程&#xff0c;大家一起来学习哈&#xff01;任务1&#xff1a;课程介绍1、介绍与引入2、配置管理3、依赖注入4、ASP.NET Core HTTP介绍5、认证与授权6、ASP.NET Core MVC任务2&#xff1a…

Eclipse下Tomcat服务器配置和使用

在安装完Tomcat之后&#xff0c;在没有进行相关配置时&#xff0c;我们需要到终端下面去启动Tomcat。如果我们在使用Eclipse进行Java开发时&#xff0c;如果能够直接启动Tomcat服务器那将是极为方便&#xff0c;本篇就来讲述Eclipse下Tomcat服务器如何配置以及如何使用。 1、配…

Facebook押注VS Code

Facebook 近日宣布默认采用 VS Code 作为内部开发环境。去年 Facebook 宣布停止维护其开源的 Nuclide/Atom-IDE&#xff0c;以及相关的一些库。Nuclide/Atom-IDE 是 Atom 编辑器的功能包&#xff0c;其通过语言服务器协议与自定义语言服务器交互&#xff0c;为 Atom 提供一系列…

Linux下软件安装和卸载

在Windows下&#xff0c;我们安装软件基本上是先到网上下载软件的安装包&#xff0c;通常是以.exe和.msi为后缀的文件&#xff0c;然后双击安装包&#xff0c;之后就可以按照软件安装向导一步步进行安装了&#xff0c;但在Linux下&#xff0c;软件的安装方式截然不同。总的来说…

为WPF, UWP 及 Xamarin实现一个简单的消息组件

友情提示&#xff1a;阅读本文大概需要8分钟。欢迎大家点击上方公众号链接关注我&#xff0c;了解新西兰码农生活本文目录&#xff1a;1. 介绍2. Message - 消息3. Subscription - 订阅4. MessageHub - 消息总线4.1 Subscribe - 订阅4.2 Unsubscribe - 取消订阅4.3 Publish - 发…

Mac(OS X)安装、配置并使用MySQL数据库

1、MySQL安装包下载 MySQL Community Server下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/&#xff0c;下载完毕之后安装文件如下所示&#xff1a; 2、MySQL安装 双击安装文件进行安装&#xff0c;出现如下界面&#xff1a; 双击窗体中的“mysql-5.7.10-osx10.9-…

用ASP.NETCore构建可检测的高可用服务

一、前言2019 中国 .NET 开发者峰会&#xff08;.NET Conf China 2019&#xff09;于2019年11月10日完美谢幕&#xff0c;校宝在线作为星牌赞助给予了峰会大力支持&#xff0c;我和项斌等一行十位同事以讲师、志愿者的身份公司参与到峰会的支持工作中&#xff0c;我自己很荣幸能…