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