1. 程式人生 > >NET Core類庫專案中如何讀取appsettings json中的配置

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 )

作為類庫的設計者,你可以更貼心些,寫個擴充套件方法進行上面的注入操作。


原文地址:http://www.cnblogs.com/dudu/p/6828045.html


.NET社群新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

640?wx_fmt=jpeg

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow