.NET Core 允许从配置文件中懒惰地读取设置,将其反序列化为POCO并使用一行代码在内置DI容器中注册该POCO:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<MyOptions>(Configuration.GetSection("MySection"));
}
Run Code Online (Sandbox Code Playgroud)
然后任何消费者都可以解析IOptions<MyOptions>访问该POCO:
public HomeController(IOptions<MyOptions> optionsAccessor)
{
MyOptions options = optionsAccessor.Value;
}
Run Code Online (Sandbox Code Playgroud)
这种方法有明显的缺点:
Microsoft.Extensions.Options包中不必要的依赖:
模拟,测试和显式实例创建变得更加冗长.
没有解决方案的最简单的解决方案是什么IOptions<T>?