.NET Core类库项目中如何读取appsettings.json中的配置
这是一位朋友问我的问题,写篇随笔回答一下。有2种方法,一种叫丑陋的方法 —— IConfiguration ,一种叫优雅的方法 —— IOptions 。
1)先看丑陋的方法
比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串:
{"redis": {"ConnectionString": "xxx"} }
需要在 RedisClient 的构造函数参数中添加 IConfiguration 接口,并通过它直接读取:
public class RedisClient {private readonly string _connectionString;public RedisClient(IConfiguration configuration){_connectionString = configuration.GetSection("redis")["ConnectionString"];} }
然后在 Startup 的 ConfigureServices() 方法中进行注入:
public IConfigurationRoot Configuration { get; }public void ConfigureServices(IServiceCollection services) {services.AddSingleton<IConfiguration>(Configuration); }
2)接着看优雅的方法
首先定义一个存放连接字符串的配置类 RedisOptions :
public class RedisOptions {public string ConnectionString { get; set; } }
然后给 RedisClient 的构造函数参数中添加 IOptions<RedisOptions> 接口,通过 IOptions<RedisOptions> 读取配置,RedisClient 无需关心 appsettings.json :
public class RedisClient {private readonly RedisOptions _redisOptions;public RedisClient(IOptions<RedisOptions> redisOptions){_redisOptions = redisOptions.Value;} }
而 appsettings.json 中的配置可以在 Startup 的 ConfigureServices() 中注入进去:
services.AddOptions(); services.Configure<RedisOptions>(Configuration.GetSection("redis"));
(注:使用上面的 Configure 方法需要安装 nuget 包 Microsoft.Extensions.Options.ConfigurationExtensions )
作为类库的设计者,你可以更贴心些,写个扩展方法进行上面的注入操作。
转载于:https://www.cnblogs.com/dudu/p/6828045.html
.NET Core类库项目中如何读取appsettings.json中的配置相关推荐
- C#net6控制台程序中读取appsettings.json
C#net6控制台程序中读取appsettings.json 背景 具体实现 使用方法 背景 我们知道,在原来.netframework平台下的控制台程序配置文件为App.config,微软推出跨平台 ...
- dataframe数组做元素_大数据技术之使用 DataFrame 读取复杂 JSON 中的嵌套数组
本篇教程探讨了大数据技术之使用 DataFrame 读取复杂 JSON 中的嵌套数组,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入. 众所周知,在早期Spark版本中就已经支持 ...
- spark中读取json_【Spark】使用DataFrame读取复杂JSON中的嵌套数组
众所周知,在早期Spark版本中就已经支持读取Json格式的数据文件,并能够直接转换为数据库表,以方便我们进行处理数据,在本篇文章中我们将介绍如何通过Spark API很简单地读取Json数据,并进一 ...
- net core 2 读取appsettings.json
问: .Net Core: Application startup exception: System.IO.FileNotFoundException: The configuration file ...
- linux上jar包无法识别本地文件格式,解决使用maven将项目打包成jar包后运行在linux系统中无法读取jar包中文件的问题...
哈哈,之前计划的每周至少更新一个博客的计划又因为各种原因都泡汤了.看来坚持真得是一件挺让人头疼的问题,无论如何,从这周开始接下来每周一定要至少更新一个技术博客,欢迎大家监督! 好,言归正传.之前前几周 ...
- Winform中实现读取xml配置文件并动态配置DevExpress的RadioGroup的选项
场景 Winform中对DevExpress的RadioGroup进行数据源绑定,即通过代码添加选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl ...
- java 解析dat_JAVA中怎么读取DAT文件中的内容
匿名用户 1级 2016-12-23 回答 DAT估计是个二进制 或者文本 跟普通读取文件是一样的 读取上来 你再对文件格式进行拆分 首先你要了解 它的格式是什么 你可以用 NOTEPAD++或者 ...
- Python中numpy读取高维数组中特定的行,列
直接跑代码,看懂代码,跑一遍,你自然懂了. ''' 多维矩阵按括号的层级,从外向内,一次是第1,2,3,...维b[]内用逗号将各维分开,分别代表第1,2,3...维元素 逗号把数组分成两维度,左边是 ...
- linux中recvfrom读取速度,Linux中的select、sendto、recvfrom的系统开销
未完成 测试环境为8核Intel Core i7 860 2.8GHz,内存8Gb 1333MHz,网卡是100Mbps.内核版本2.6.18. 下面的统计都是使用long sys_clock_get ...
最新文章
- HUD 5687(字典树)
- python朋友圈为什么这么火-看我如何用Python发一个高逼格的朋友圈
- mysql 22001_mysql ERROR 1264 (22003): Out of range value for column 'x' at row 1 错误
- 关于 项目中Ioc基础模块 的搭建 (已适用于.net core / .net Framework / Nancy)
- label y 训练集测试集x_训练集、测试集 train_test_split
- c语言创建一个顺序表主函数,用C语言来创建一个顺序表(数据结构部分)
- mysql快速批量入库_MySQL-批量入库优化
- 多功能拼团商城源码-带优惠券功能+自适应移动端+对接免签约支付
- MySQL数据库和表名大小写敏感开关的打开办法
- 【预告】火星人敏捷开发手册(免费敏捷教材及宣传材料预览)
- Win7 AERO主题变成灰色解决方法
- 人社部《专项职业能力证书》如何考取!含金量!证书效力!
- 传奇服务器端回满血文件,单机架设传奇服务器第八课:血过65535
- 请说一下你是如何理解互联网思维的?
- 上海学车科目二,科目三容易扣分点分享,你了解多少
- Tableau-旭日图(详细操作步骤)
- matlab信号内插,【 MATLAB 】MATLAB 实现模拟信号采样后的重建(三)应用三次样条函数spline实现内插...
- 【Matlab】如何使用Simulink进行电池建模和SOC预估
- c代码-一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
- 怎么把foxmail的邮件和服务器同步,foxmail客户端导入邮件但是网页端没有同步,怎么处理呢[foxmail]-上海腾曦网络...
热门文章
- SQL2008修改并保存表结构时报错的解决(阻止保存要求重新创建表的更改)
- 基于sharepoint 2003的内容管理1.0
- 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
- DS博客作业05--树
- LeetCode第 146 号问题: LRU 缓存机制
- Python: translate()审查清理文本字符串
- 《Linux嵌入式实时应用开发实战(原书第3版)》——3.5 Linux文件系统
- Android核心基础第八天
- QQ交流群,欢迎有兴趣的同学加入。
- OC底层原理之Runtime