Консольное приложение .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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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