.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中的配置的文章就介绍到这了,更多相关.NET Core读取appsettings.json配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
ASP.NET中Validation验证控件正则表达式特殊符号的说明
本文介绍asp.net中RegularExpressionValidator控件中的几种特殊字符串使用规则,并做了代码演示,希望对大家有所帮助。2016-04-04
详解CentOS 7.4下如何部署Asp.Net Core结合consul
这篇文章主要介绍了详解CentOS 7.4下如何部署Asp.Net Core结合consul,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-06-06


最新评论