Консольное приложение .NET 8 — HostApplicationBuilder — как получить доступ к службам после входа в приложениеC#

Место общения программистов C#
Anonymous
Консольное приложение .NET 8 — HostApplicationBuilder — как получить доступ к службам после входа в приложение

Сообщение Anonymous »

У меня есть консольное приложение .NET 8, которое использует HostApplicationBuilder для установки и настройки службы Windows.
Кто-нибудь знает, как можно получить доступ к IServiceCollection code> внутри объекта IHost после запуска приложения?
Я добавил Entity Framework Core DbContext (

Код: Выделить всё

AddDbContext
), служба Windows (

Код: Выделить всё

AddSingleton
) и фоновый рабочий (

Код: Выделить всё

AddHostedService
).
Затем я вызываю host.Run(), который запускает метод ExecuteAsync() фонового рабочего процесса.
В фоновом рабочем процессе конструктору передается служба, а внутри ExecuteAsync() я могу вызывать методы этой службы.
Однако проблема в том, что Мне нужно иметь возможность получить контекст базы данных (он не является частью службы, поскольку он делает что-то другое), но нет обратного дескриптора объекта IHost.
Я собираюсь сделать что-то вроде (где xyz — ссылка на службы)

Код: Выделить всё

xyz.GetService("myservice").DoSomething()
или

Код: Выделить всё

xyz.GetContext("bobsContext).UpdateSomething()
Большая часть документации, которую я нашел, предполагает наличие веб-приложений и каркаса из одного из веб-шаблонов Visual Studio, однако я работаю над службой Windows.

Подробнее здесь: https://stackoverflow.com/questions/788 ... fter-in-ap

Вернуться в «C#»