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

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

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

    }
}

1 Ответ

0 голосов
/ 06 ноября 2018

Если вы ищете самое простое решение, просто сделайте ваш класс 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>();

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

...