【发布时间】:2017-09-16 08:12:47
【问题描述】:
这是我的代码,但它不起作用,因为显然,IJobDetails 需要使用作业生成器创建。有什么方法可以使用构造函数中给出的外部依赖项来创建 Job?
var container = new UnityContainer();
container.RegisterType<BbProcessor, BbProcessor>();
IJobDetail jobProcessor = container.Resolve<BbProcessor>() as IJobDetail;
// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();
// get a scheduler
IScheduler sched = schedFact.GetScheduler();
sched.Start();
ITrigger trigger = TriggerBuilder.Create()
.StartNow()
.WithSimpleSchedule(x => x
.WithIntervalInSeconds(10)
.RepeatForever())
.Build();
sched.ScheduleJob(jobProcessor , trigger);
演员阵容很糟糕,但这只是我正在尝试做的示例(BbProcessor 是具有给构造函数的依赖项并执行我想做的工作的类)。
public class BbProcessor : IJob
{
private readonly Repository _repository;
public BbProcessor(Repository Repository)
{
_repository = Repository;
}
}
【问题讨论】:
-
你能给我们看看 BbProcessor 的代码吗?
-
public class BbProcessor : IJob { private readonly Repository _repository; public BbProcessor(Repository Repository) { _repository = Repository; } -
我认为您还需要一个无参数构造函数。请参阅下面我编辑的答案。
-
所以我们俩同时解决了这个问题,我已经有了想法,明天会更新解决方案
-
查看这个将 Quartz 与 Unity 集成的项目:github.com/hbiarge/Quartz.Unity
标签: c# quartz.net