【发布时间】:2019-05-22 15:47:26
【问题描述】:
我正在尝试在我创建的服务中注入IOptions,它始终为空:
public class Startup
{
private IConfiguration configuration;
public Startup(IConfiguration config)
{
this.configuration = config; //gets injected from Main method , not null !
}
public void ConfigureServices(IServiceCollection services)
{
Config config = configuration.GetSection("Config").Get<Config>();
services.Configure<Config>(configuration);
services.AddTransient<StatusService>();
services.AddCors();
services.AddOptions();
}
}
服务
internal class StatusService
{
private Config config;
public StatusService(IOptions<Config>_config)
{
this.config=_config.Value; // _config has default fields
}
}
PS Config 只是一个 POCO,它使用 UseConfiguration 扩展名在 Program.Main 方法中填充。配置解析成功,所以没有问题。我在 @ 中成功注入了配置987654326@构造函数。
【问题讨论】:
-
您是否尝试通过
config而不是configuration为services.Configure<Config>(configuration);传递? -
Config没有实现IConfiguration,这就是Configure扩展所期望的。 -
试试这个:
services.Configure<Config>(options => configuration.GetSection("Config").Bind(options));
标签: c# asp.net-core microsoft.extensions.hosting