我正在编写一个用C#创建Quartz调度作业(job)的方法.目前看起来是这样的.
private async Task BuildJobs(int startHour, int endHour, int intervalOffsetSeconds = 0)
{
try
{
var job = JobBuilder.Create<RepostTransactionsJob>()
.WithIdentity(nameof(RepostTransactionsJob), TriggerGroup)
.WithDescription("Reposting transactions")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity(string.Concat(nameof(RepostTransactionsJob), "-trigger"), TriggerGroup)
.WithSchedule(CronScheduleBuilder.CronSchedule(string.Format("{2:ss} {2:mm} {0}-{1} ? * * *", startHour, endHour, TimeSpan.FromSeconds(intervalOffsetSeconds))))
.Build();
await this.scheduler.ScheduleJob(job, trigger);
}
catch (Exception ex)
{
this.logger.LogToLocal(ex.Message);
}
}
然而,我想要将RepostTransactionsJob
分的参数化为参数,我正在努力.我try 了以下方法,但返回了一个构建错误.
try :
private async Task BuildJobs<T>(int startHour, int endHour, int intervalOffsetSeconds = 0) where T : class
{
try
{
var jobName = typeof(T).Name;
var job = JobBuilder.Create<T>()
.WithIdentity(jobName, TriggerGroup)
.WithDescription("Reposting transactions")
.Build();
var trigger = TriggerBuilder.Create()
.WithIdentity(string.Concat(jobName, "-trigger"), TriggerGroup)
.WithSchedule(CronScheduleBuilder.CronSchedule(string.Format("{2:ss} {2:mm} {0}-{1} ? * * *", startHour, endHour, TimeSpan.FromSeconds(intervalOffsetSeconds))))
.Build();
await this.scheduler.ScheduleJob(job, trigger);
}
catch (Exception ex)
{
this.logger.LogToLocal(ex.Message);
}
}
生成错误:
The type 'T' cannot be used as a type parameter 'T' in the generic type or method 'JobBuilder.Create<T>()' There is no implicit reference conversion from 'T' to 'Quartz.IJob'