È necessario implementare un Quartz.Spi.IJobFactory
- che utilizza un IResolutionRoot
per creare il lavoro (vedere sotto per l'implementazione). quindi configurare il programma di pianificazione di usarlo: Quartz.IScheduler.JobFactory = kernel.Get<NinjectJobFactory>();
(o, in alternativa: Quartz.IScheduler.JobFactory = new NinjectJobFactory(kernel);
)
public class NinjectJobFactory : IJobFactory
{
private readonly IResolutionRoot resolutionRoot;
public NinjectJobFactory(IResolutionRoot resolutionRoot)
{
this.resolutionRoot = resolutionRoot;
}
public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
{
return (IJob)this.resolutionRoot.Get(bundle.JobDetail.JobType);
}
public void ReturnJob(IJob job)
{
this.resolutionRoot.Release(job);
}
}
Grazie mille, ho preso @BatteryBackupUnit – TommyLike
'Quartz.IScheduler.JobFactory = * nuovo * NinjectJobFactory() 'ha più senso – stuartd
sì forse. Ma penso che sia piuttosto sulla falsariga di 'Quartz.IScheduler.JobFactory = kernel.Get()' o lasci che 'NinjectJobFactory' sia iniettato .. è per questo che l'ho lasciato fuori ;-) –
BatteryBackupUnit