网站导航设计模板,免备案空间哪家好,高中男女做那个视频网站,网站系统分析报告这是一位朋友问我的问题#xff0c;写篇随笔回答一下。有2种方法#xff0c;一种叫丑陋的方法 —— IConfiguration #xff0c;一种叫优雅的方法 —— IOptions 。
1#xff09;先看丑陋的方法
比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串写篇随笔回答一下。有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.AddSingletonIConfiguration(Configuration);
}
2接着看优雅的方法
首先定义一个存放连接字符串的配置类 RedisOptions
public class RedisOptions
{ public string ConnectionString { get; set; }
}
然后给 RedisClient 的构造函数参数中添加 IOptionsRedisOptions 接口通过 IOptionsRedisOptions 读取配置RedisClient 无需关心 appsettings.json
public class RedisClient
{ private readonly RedisOptions _redisOptions; public RedisClient(IOptionsRedisOptions redisOptions){_redisOptions redisOptions.Value;}
}
而 appsettings.json 中的配置可以在 Startup 的 ConfigureServices() 中注入进去
services.AddOptions();
services.ConfigureRedisOptions(Configuration.GetSection(redis));
注使用上面的 Configure 方法需要安装 nuget 包 Microsoft.Extensions.Options.ConfigurationExtensions
作为类库的设计者你可以更贴心些写个扩展方法进行上面的注入操作。 原文地址http://www.cnblogs.com/dudu/p/6828045.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注