我使用.NET MVC 4.所有的服务都使用Ninject注入。 我试图安排使用Quartz工作。 眼下,就业登记在Global.asax
,如下所示:
Global.asax
:
protected void Application_Start() {
// ... configuration stuff
ScheduledJobs.RegisterJobs();
}
ScheduleJobs.cs
有ScheduledJobs
类,它与触发器创造就业机会,并将它们添加到一个标准的时间表。
在ScheduleJobs.cs
:
public class ScheduledJobs {
public static void RegisterJobs() {
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
IJobDetail job = JobBuilder.Create<JobUsingService>()
.WithIdentity("JobUsingService")
.Build();
ITrigger trigger = TriggerBuilder.Create()
.WithDailyTimeIntervalSchedule(s =>
s.WithIntervalInHours(1)
.OnEveryDay()
.StartingDailyAt(new Quartz.TimeOfDay(DateTime.Now.Hour, DateTime.Now.Minute)))
.Build();
scheduler.ScheduleJob(job, trigger);
}
}
这是工作的代码:
public class JobUsingService : IJobUsingService, IJob {
private ISomeService someService;
public JobUsingService(ISomeService _someService) {
someService = _someService;
}
public void Execute(IJobExecutionContext context) {
someService.someStuff();
}
}
的问题是, JobUsingService
必须使用Ninject被初始化,使得SomeService
注入到它(也由Ninject)。 主叫IJobDetail job = JobBuilder.Create<JobUsingService>().WithIdentity("JobUsingService").Build();
跳过了Ninject注入和不注入必要的服务创建一个类的实例定期。
如何创建类型的工作JobUsingService
使用Ninject?
这个所谓的答案建议创建一个NinjectJobFactory
,但我不知道如何实际使用这个工厂和创造就业机会。