李sir_Blog

博客园 首页 联系 订阅 管理

我只发现IOptions的一个用处——方便了在.NET Core应用程序中使用强类型配置。

 

有如下appsettings.json配置文件

复制代码
{
  "topClient": {
    "serverUrl": "",
    "appKey": "",
    "appSecret":  ""
  }
}
复制代码

为此定义了一个配置类TopClientOptions:

public class TopClientOptions
{
    public string ServerUrl { get; set; }
    public string AppKey { get; set; }
    public string AppSecret { get; set; }
}

然后通过在Startup的ConfigureServices()添加下面的代码,就可以将appsettings.json中的配置绑定到TopClientOptions的实例,并完成依赖注入。

services.Configure<TopClientOptions>(Configuration.GetSection("topClient"));

(注:需要安装NuGet包 Microsoft.Extensions.Options.ConfigurationExtensions )

在需要读取TopClientOptions中配置的地方只需通过构造函数注入即可:

public class DefaultTopClient : ITopClient
{
    public DefaultTopClient(IOptions<TopClientOptions> options)
    {
    }
} 

 

复制代码
var provider = services.BuildServiceProvider();
            IWebHostEnvironment environment = provider.GetRequiredService<IWebHostEnvironment>();
            CurrentPath = Path.Combine(environment.ContentRootPath, "").ReplacePath();

            Secret = provider.GetRequiredService<IOptions<Secret>>().Value;

            CreateMember = provider.GetRequiredService<IOptions<CreateMember>>().Value ?? new CreateMember();
            ModifyMember = provider.GetRequiredService<IOptions<ModifyMember>>().Value ?? new ModifyMember();

            GlobalFilter = provider.GetRequiredService<IOptions<GlobalFilter>>().Value ?? new GlobalFilter();
复制代码
posted on 2022-01-10 08:36  李sir  阅读(314)  评论(0编辑  收藏  举报