Quartz.net: Как создавать рабочие места с помощью внедрения зависимостейC#

Место общения программистов C#
Ответить
Anonymous
 Quartz.net: Как создавать рабочие места с помощью внедрения зависимостей

Сообщение Anonymous »

Я пытаюсь выполнить задание планировщика Quartz в .NET с непустым конструктором и пытаюсь использовать внедрение зависимостей .NET по умолчанию для предоставления зависимостей. Это мой класс задания, которому требуется внедрение зависимостей

Код: Выделить всё

public class MyJob : IJob
{
private readonly ILogger _logger;

public MyJob(ILogger logger)
{
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
}

public Task Execute(IJobExecutionContext context)
{
_logger.LogDebug("It's working!");
}
}
И вот как я строю задание

Код: Выделить всё

IJobDetail jobDetail = JobBuilder.Create()
.WithIdentity("MyID", "MyGroup")
.Build();

var triggerBuilder = TriggerBuilder.Create()
.WithIdentity("MyID")
.StartAt(DateTime.Now)
.WithCronSchedule("*/1 * * * * ?"); // Every second

var trigger = triggerBuilder.Build();
_scheduler.ScheduleJob(jobDetail, trigger)
Теперь я определил в конфигурации своего приложения следующее:

Код: Выделить всё

// Quartz configuration.
services.AddQuartz(q =>
{
// Add dependency injection.
q.UseMicrosoftDependencyInjectionScopedJobFactory(options =>
{
// if we don't have the job in DI, allow fallback
// to configure via default constructor
options.AllowDefaultConstructor = true;
});
});

services.AddTransient();
// Also tried services.AddTransient();
как определено в документации по DI. Тем не менее, когда я перестраиваю свое решение и запускаю сервер, выдается следующая ошибка:

Quartz.SchedulerException: проблема с созданием экземпляра класса MyProject.MyNamespace.Myjob: Cannot создать экземпляр типа, не имеющего пустого конструктора
Имя параметра: MyJob' ---> System.ArgumentException: невозможно создать экземпляр типа, не имеющего пустого конструктора

Тем не менее, я явно настроил MS DI для использования Quartz, следуя их документации. Итак, как я могу внедрить зависимости? Я использую Quartz 3.2.4 и установил пакет Quartz.Extensions.DependencyInjection (также 3.2.4).


Подробнее здесь: https://stackoverflow.com/questions/667 ... -injection
Ответить

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

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

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

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

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