.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 )
作为类库的设计者,你可以更贴心些,写个扩展方法进行上面的注入操作。
.NET Core类库项目中如何读取appsettings.json中的配置的更多相关文章
- Asp.Net Core 进阶(一) —— 读取appsettings.json
我们以前在Asp.Net MVC中使用 System.Configuration.ConfigurationManager 来读取web.config文件.但是Asp.Net Core MVC已经没有 ...
- .net core 中如何读取 appsettings.json 相关配置
appsettings.json如下 { "Logging": { "LogLevel": { "Default": "Debug ...
- .NET Core 类库中读取appsettings.json
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default&quo ...
- .Net Core3.0 WebApi 项目框架搭建 三:读取appsettings.json
.Net Core3.0 WebApi 项目框架搭建:目录 appsettings.json 我们在写项目时往往会把一些经常变动的,可能会变动的参数写到配置文件.数据库中等可以存储数据且方便配置的地方 ...
- Asp .Net Core 读取appsettings.json配置文件
Asp .Net Core 如何读取appsettings.json配置文件?最近也有学习到如何读取配置文件的,主要是通过 IConfiguration,以及在Program中初始化完成的. ...
- asp.net core读取appsettings.json,如何读取多环境开发配置
摘要 在读取appsettings.json文件中配置的时候,觉得最简单的方式就是使用asp.net core注入的方式进行读取了. 步骤 首先根据配置项的结构定义一个配置类,比如叫AppSettin ...
- .Net Core 读取appsettings.json的配置
在.net core中是没有*.config 文件的 配置文件都是*.json 1.在project.json里下面这行代码 "Microsoft.Extensions.Options.Co ...
- .net core 读取appsettings.json乱码
.net core 读取配置文件乱码:vs2019读取appsettings.json乱码问题; .net core 读取appsettings.json乱码问题;用notepad++或者其他编辑器打 ...
- .NET Core 中读取appsettings.json配置文件的方法
appsettings.json配置文件结构如下: { "WeChatPay": { "WeChatApp_ID": "wx9999998999&qu ...
随机推荐
- CMD递归文件夹
SET dir=%~dp0 SET /a cnt=0 echo dir is: %dir% cd /d %dir% for /R %dir% %%i in (*.apk) do ( set /a cn ...
- 游戏编程精粹学习 - 使用Bloom过滤来提高计算性能(BloomFilter)
原文在<游戏编程精粹2>的1.2中,BloomFilter是一种可以快速检测是否存在集合包含关系的数据结构,但有一定的误识别率. 该结构的优点 判断包含关系时效率较高,粗略测试了下比Lis ...
- Oracle分割字符串 REGEXP_SUBSTR用法
分割字符串中所有指定字符,然后成多行参数说明,参数1: 待分割字符串参数2:正则表达式参数3:起始位置,从第几个字符开始正则表达式匹配(默认为1)参数4:标识第几个匹配组,默认为1参数5:模式('i' ...
- 【iCore1S 双核心板_FPGA】例程十四:FSMC总线通信实验——独立地址模式
实验原理: STM32F103上自带FMC控制器,本实验将通过FMC总线的地址独立模式实现STM32与FPGA 之间通信,FPGA内部建立RAM块,FPGA桥接STM32和RAM块,本实验通过FSMC ...
- InstrumentDriver,对iOS自动化测试说 Yes!
InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例. 研究过iOS自动化测试的同学肯 ...
- centos7安装elasticsearch-head
elasticsearch-head安装前准备 1.操作系统64位CentOS Linux release 7.2.1511 (Core)2.git是必需的elasticsearch-head是一款开 ...
- 教你一招:windows批处理中实现延时的办法
五种方法可以实现批出里的延时,推荐使用方法一,该方法也是使用最多的. 方法一 用ping命令延迟(这是最简单而且是最常见的): @echo off echo "use ping to del ...
- Java如何拆分正则表达式和字符串?
在Java编程中,如何拆分正则表达式和字符串? 以下示例演示如何使用regex.Pattern类的Pattern.compile()方法和patternname.split()方法拆分正则表达式. p ...
- [Model] GoogLeNet
主要就是对Inception Module的理解 网络结构分析 没有densy layer竟然,这是给手机上运行做铺垫么. 一个新型的模块设计: [不同类型的layer并行放在了一起] 最初的设计: ...
- 使用gdbserver远程调试
使用gdbserver远程调试 1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1下载地址:http://ftp ...