我只發現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();