Как я могу использовать некоторые из своих сервисов и репозиториев в рабочем классе 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>();
это фактически создаст экземпляр вашего работника с вашим сервисом, введенным по мере необходимости.