Как я могу использовать некоторые из своих сервисов и репозиториев в рабочем классе Quartz.net?

Мне нужно использовать некоторые из моих сервисов в классе работы Quartz.net. Я использую Autofac для внедрения зависимостей.

public class PushJob : IJob
{
    public async Task Execute(IJobExecutionContext context)
    {                      
      // need to use some service here 

    }
}

1 ответ

Если вы ищете самое простое решение, просто сделайте ваш класс PushJob отправной точкой = составной корень вашего DI следующим образом:

public class PushJob : IJob
{
    private IContainer _container;

    public async Task Execute(IJobExecutionContext context)
    {                      
      Register();
      DoWork();
    }
}

в Register() просто создайте свой экземпляр контейнера, зарегистрируйте все зависимости и сохраните в _container. Затем в DoWork сделайте что-то вроде:

var worker = _container.Resolve<IWorker>();

это фактически создаст экземпляр вашего работника с вашим сервисом, введенным по мере необходимости.

Другие вопросы по тегам