来源: Using multiple instances of strongly-typed settings with named options in .NET Core 2.x
作者: Andrew Lock
译者: Lamond Lu

.NET Core从1.0版本开始,就已经开始使用Options模式绑定强类型配置对象。从那时起到现在,这个特性已经获得了更多的功能。例如在.NET Core 1.1中引入的IOptionsSnapshot类。使用这个类的好处是,当你的配置文件(例如: appsetting.json)发生变化时,它可以帮助我们自动刷新我们的强类型配置对象。
本篇博客中,我们将讨论在依赖注入容器中注册强类型配置的多个实例的几种方式。我将特别说明如何使用Named Options方式来完成注入。
使用强类型配置
Options模式将POCO对象和IConfiguration对象绑定,从而实现强类型配置。因为这一过程我已经在之前一篇博文中介绍过,所以这里我就简述一下。
我们可以将强类型配置对象和配置绑定起来,并注入到你的服务中。
public class SlackApiSettings { public string WebhookUrl { get; set; } public string DisplayName { get; set; } }你可以在Startup类的ConfigureServices中使用Configure将强类型配置对象和配置中的一个节点绑定起来。
public void ConfigureServices(IServiceCollection services) { services.Configure<SlackApiSettings>(Configuration.GetSection("SlackApi")); }以上代码中,Configure方法将你的配置和SlackApiSettings对象绑定了起来。除了以上方式,Configure方法还提供了一个参数为Action的重载,所以你来可以使用如下的方式绑定配置。
public void ConfigureServices(IServiceCollection services) { services.Configure<SlackApiSettings>(x => x.DisplayName = "My Slack Bot"); }你可以通过在服务中注入IOptions对象来访问配置好的SlackApiSettings对象。
