回到 .net core 2,我创建了一个具有自定义属性的托管服务,例如:
public class MyService : BackgroundService
{
public bool IsRunning {get;set;}
...
我可以在 startup.cs 中设置,例如:
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHostedService,HostedServices.MyService>();
...
然后我可以在剃须刀页面的其他地方引用它,例如:
public class IndexModel : PageModel
{
private readonly IHostedService _mySrv;
public IndexModel(IHostedService mySrv) => _mySrv = mySrv;
[BindProperty]
public bool IsRunning { get; set; }
public void OnGet() => IsRunning = ((HostedServices.MyService)_mySrv).IsRunning;
}
现在我已升级到 .net core 3,我的启动已更改为:
services.AddHostedService<HostedServices.MyService>();
但是我在 IndexModel 中的 DI 引用不再给我 MyService,而是给了我一个 GenericWebHostService 类型的对象,我不知道如何从中获取我的自定义 MyService。在 IndexModel 中将“IHostedService”更改为“MyService”也不起作用,我收到“无法解析服务”错误。
如何从依赖注入中获取 MyService 的实例?