这是一位朋友问我的问题,写篇随笔回答一下。有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)接着看优雅的方法
首先定义一个存放连接字符串的