将配置传递给 IHostedService

spa*_*pan 2 c# .net-core

我正在尝试向 an 添加配置值,IHostedService但不知道如何操作。

这就是我目前所拥有的:

启动

services.Configure<MyOptions>(Configuration.GetSection("MyOptions"));
services.AddHostedService<MyHostedService>();
Run Code Online (Sandbox Code Playgroud)

我的选项

public class MyOptions
{
    public string MyOption{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

应用程序设置

"MyOptions": {
  "MyOption": "42"
}
Run Code Online (Sandbox Code Playgroud)

我的托管服务

public MyHostedService(ILogger<MyHostedService> logger)
{
    _logger = logger;
    // Where are my options?! :(
}
Run Code Online (Sandbox Code Playgroud)

Fla*_*ver 5

你快到了。你只剩下一件事要做:

仅在使用构造函数依赖注射IOptions<MyOptions>或相关的在你的(根据您的情况)IHostedService

public MyHostedService(ILogger<MyHostedService> logger, IOptions<MyOptions> optionsAccessor)
{
    _logger = logger;
    _options = optionsAccessor.Value;
}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅ASP.NET Core 中的选项模式