[英]How to configure dependencies in startup using the options pattern?
在 ASP.NET Core ConfigureServices Startup 方法中,您可以执行以下操作
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true))
};
});
我想在启动时做这样的事情来配置我自己的依赖。
services.AddTest(options =>
new TestOptions
{
TestNumber = 8
});
这是我的扩展方法,它链接到IServiceCollection
...
public static IServiceCollection AddTest(this IServiceCollection services, Action<TestOptions> options)
{
services.AddScoped<ITest, Test>();
if (options != null)
{
services.Configure(options);
}
return services;
}
而我的TestOptions
只是一个简单的 model ......
public class TestOptions
{
public int? TestNumber { get; set; }
}
然后,最后我将这些选项传递给我想使用它们的 class 的构造函数......
public Test (IConfiguration configuration, IOptions<TestOptions> options)
{
LocalTestNumber = options.Value.TestNumber;
}
但是,当我在LocalTestNumber = options.Value.TestNumber
上打断点时,TestNumber 是 null 我不知道为什么,有人对此有任何见解吗?
我按照本教程执行此操作... https://codeburst.io/options-pattern-in-net-core-a50285aeb18d
问题出在您显示的这部分代码中:
services.AddTest(options => new TestOptions { TestNumber = 8 });
与其创建并返回被丢弃的TestOptions
的新实例,不如配置传入的options
参数。这是固定版本:
services.AddTest(options => options.TestNumber = 8);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.