.NET?Core類庫項目中讀取appsettings.json配置的方法
這是一位朋友問我的問題,寫篇隨筆回答一下。有2種方法,一種叫丑陋的方法 ——IConfiguration ,一種叫優(yōu)雅的方法 —— IOptions 。
1)先看丑陋的方法
比如在RedisClient 中需要讀取appsettings.json 中的 redis 連接字符串:
{ "redis": { "ConnectionString": "xxx" } }
需要在RedisClient 的構造函數參數中添加IConfiguration 接口,并通過它直接讀?。?/p>
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)接著看優(yōu)雅的方法
首先定義一個存放連接字符串的配置類 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配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Asp.net中Microsoft.Identity的IPasswordHasher加密的默認實現與運用
本文主要介紹了Microsoft.Identity的IPasswordHasher加密的默認實現與運用。具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02asp.net中如何批量導出access某表內容到word文檔
最近有項目需求是這樣的,需要將某表中的每一條記錄中的某些內容導出在一個word文檔中。下面小編就把我的解決辦法分享給大家,供大家參考2015-10-10