.NET?Core類庫(kù)項(xiàng)目中讀取appsettings.json配置的方法
這是一位朋友問(wèn)我的問(wèn)題,寫篇隨筆回答一下。有2種方法,一種叫丑陋的方法 ——IConfiguration ,一種叫優(yōu)雅的方法 —— IOptions 。
1)先看丑陋的方法
比如在RedisClient 中需要讀取appsettings.json 中的 redis 連接字符串:
{
"redis": {
"ConnectionString": "xxx"
}
}需要在RedisClient 的構(gòu)造函數(shù)參數(shù)中添加IConfiguration 接口,并通過(guò)它直接讀?。?/p>
public class RedisClient
{
private readonly string _connectionString;
public RedisClient(IConfiguration configuration)
{
_connectionString = configuration.GetSection("redis")["ConnectionString"];
}
}然后在 Startup 的ConfigureServices() 方法中進(jìn)行注入:
public IConfigurationRoot Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IConfiguration>(Configuration);
}2)接著看優(yōu)雅的方法
首先定義一個(gè)存放連接字符串的配置類 RedisOptions :
public class RedisOptions
{
public string ConnectionString { get; set; }
}然后給RedisClient 的構(gòu)造函數(shù)參數(shù)中添加IOptions<RedisOptions> 接口,通過(guò)IOptions<RedisOptions> 讀取配置,RedisClient 無(wú)需關(guān)心 appsettings.json :
public class RedisClient
{
private readonly RedisOptions _redisOptions;
public RedisClient(IOptions<RedisOptions> redisOptions)
{
_redisOptions = redisOptions.Value;
}
}而 appsettings.json 中的配置可以在 Startup 的ConfigureServices() 中注入進(jìn)去:
services.AddOptions();
services.Configure<RedisOptions>(Configuration.GetSection("redis"));(注:使用上面的 Configure 方法需要安裝 nuget 包Microsoft.Extensions.Options.ConfigurationExtensions )
作為類庫(kù)的設(shè)計(jì)者,你可以更貼心些,寫個(gè)擴(kuò)展方法進(jìn)行上面的注入操作。
到此這篇關(guān)于.NET Core類庫(kù)項(xiàng)目中如何讀取appsettings.json中的配置的文章就介紹到這了,更多相關(guān).NET Core讀取appsettings.json配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.NET使用.NET Core CLI開(kāi)發(fā)應(yīng)用程序
這篇文章主要為大家詳細(xì)介紹了.NET使用.NET Core CLI開(kāi)發(fā)應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08
Asp.net中Microsoft.Identity的IPasswordHasher加密的默認(rèn)實(shí)現(xiàn)與運(yùn)用
本文主要介紹了Microsoft.Identity的IPasswordHasher加密的默認(rèn)實(shí)現(xiàn)與運(yùn)用。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02
asp.net中如何批量導(dǎo)出access某表內(nèi)容到word文檔
最近有項(xiàng)目需求是這樣的,需要將某表中的每一條記錄中的某些內(nèi)容導(dǎo)出在一個(gè)word文檔中。下面小編就把我的解決辦法分享給大家,供大家參考2015-10-10
Rx.NET庫(kù)中IDisposable對(duì)象的用法
這篇文章介紹了Rx.NET庫(kù)中IDisposable對(duì)象的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
用類的繼承關(guān)系(重寫父類的方法)實(shí)現(xiàn)簡(jiǎn)易后臺(tái)代碼模板
Asp.net的優(yōu)勢(shì)就在于快速構(gòu)建應(yīng)用,而對(duì)于一些最基礎(chǔ)數(shù)據(jù)的增刪改以及分頁(yè)事件或者樣式的設(shè)定可以通過(guò)在父類中寫上虛方法來(lái)供子類調(diào)用,接下來(lái)將為您測(cè)試一下用子類重寫父類的方法實(shí)現(xiàn)在模板的基礎(chǔ)上衍生變化2013-01-01
asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能
這篇文章主要為大家詳細(xì)介紹了asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04

