.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)文章
ASP.NET中Validation驗(yàn)證控件正則表達(dá)式特殊符號(hào)的說(shuō)明
本文介紹asp.net中RegularExpressionValidator控件中的幾種特殊字符串使用規(guī)則,并做了代碼演示,希望對(duì)大家有所幫助。2016-04-04
詳解CentOS 7.4下如何部署Asp.Net Core結(jié)合consul
這篇文章主要介紹了詳解CentOS 7.4下如何部署Asp.Net Core結(jié)合consul,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
Ajax實(shí)現(xiàn)異步刷新驗(yàn)證用戶名是否已存在的具體方法
由于要做一個(gè)注冊(cè)頁(yè)面,看到許多網(wǎng)站上都是使用Ajax異步刷新驗(yàn)證用戶名是否可用的,所以自己也動(dòng)手做一個(gè)小實(shí)例2014-02-02
asp.net運(yùn)算符之邏輯運(yùn)算符以及其他運(yùn)算符介紹與實(shí)例
在.net中運(yùn)算符分類很多種類型,包括有我們常用的boolean型運(yùn)算符,通用的運(yùn)行符有 ==、!=、<、>、<=、>=、binary +、binary -、^、&、|、~、++、-- 和 sizeof()2013-08-08
關(guān)于兩個(gè)自定義控件的取值問(wèn)題及接口的應(yīng)用
一個(gè).aspx的頁(yè)面中,用到了兩個(gè)用戶控件,其中想做的到A控件有一個(gè)按鈕,點(diǎn)擊的時(shí)候獲取到B控件中的一個(gè)textbox的值想必大家會(huì)使用findcontrol獲取控件吧,而在生成的時(shí)候名字是不確定的,那么如何書寫呢?接下來(lái)為您提供詳細(xì)的解決方法,感興趣的朋友可以了解下啊2013-01-01
ASP.NET?Core中使用Redis實(shí)現(xiàn)緩存
本文詳細(xì)講解了ASP.NET?Core中使用Redis實(shí)現(xiàn)緩存的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
ASP.NET MVC解決上傳圖片臟數(shù)據(jù)的方法
這篇文章介紹了ASP.NET MVC解決上傳圖片臟數(shù)據(jù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09

