这是一位朋友问我的问题,写篇随笔回答一下。有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 ...
随机推荐
-
Ubuntu的个个版本代号
首先版本号跟发布日期有关,.04 为 4月份发布,.10 则在10月份发布.另外每个版本都会选一个动物作为代号,下面是 Ubuntu 从 4.10 开始的版本代号和对应动物: Ubuntu Warty ...
-
Git.Framework 框架随手记--IIS7运行序列化问题
客户反馈系统又登录不了,这是最近几次连续出现相同的问题,从日志反应情况来看: 日志级别:[info] 日志位置:Git.Framework.Resource.ResourceManager 日志时间: ...
-
剪花布条[HDU2087]
剪花布条 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
-
hadoop2.2编程:自定义hadoop map/reduce输入文件切割InputFormat
hadoop会对原始输入文件进行文件切割,然后把每个split传入mapper程序中进行处理,FileInputFormat是所有以文件作为数据源的InputFormat实现的基类,FileInput ...
-
codeforce 367dev2_c dp
codeforce 367dev2_c dp 标签: dp 题意: 你可以通过反转任意字符串,使得所给的所有字符串排列顺序为字典序,每次反转都有一定的代价,问你最小的代价 题解:水水的dp...仔细想 ...
-
JavaWeb学习日记----表单提交方式
1.表单提交方式 (1) 使用input控件中的submit提交 代码如下: <!DOCTYPE html> <html lang="en"> <he ...
-
python编写文件统计脚本
python编写文件统计脚本 思路:用os模块中的一些函数(os.listdir().os.path.isdir().os.path.join().os.path.abspath()等) 实现功能:显 ...
-
【转】Windows系统中ckplayer视频边下边放,视频转码mp4及";last atom in file was not a moov atom";问题
视频转码成mp4格式并添加关键帧: 1.先下载与自己操作系统相对应的的FFmpeg软件.官网传送门:http://ffmpeg.zeranoe.com/builds/ 下载static版的就可以,zi ...
-
java EE(1)
1.安装eclipse javaEE版本,配置好Tomcat服务器(略) 2.新建项目: Dynamic web project 3.创建服务器,并选择项目发布目录 4.添加项目: 右键服务器,选择A ...
-
KVM镜像image 转换 调整
qemu-img create -f raw test.raw 8G 创建一个raw格式,大小为8G的镜像. qemu-img info disk1.qcow2 #查看镜像大小及实际占用多少空 ...