Еще в .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>();
Но моя ссылка на DI в IndexModel больше не дает мне мой MyService, вместо этого он дает мне объект типа GenericWebHostService, из которого я не могу понять, как получить свой собственный MyService. Изменение «IHostedService» на «MyService» в IndexModel также не работает, я получаю сообщение об ошибке «Невозможно разрешить службу».
Как вернуть экземпляр MyService из инъекции зависимостей?