我只发现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();

浙公网安备 33010602011771号