how to inject quartz's job with ninject?

后端 未结 1 509
独厮守ぢ
独厮守ぢ 2020-12-05 21:29

I use ninject and quartz.net in my application and I want to inject job with ninject,But I do not know how to ,because all I know is that jobdetail is created by class of Jo

相关标签:
1条回答
  • 2020-12-05 22:07

    You'll have to implement an Quartz.Spi.IJobFactory - which uses an IResolutionRoot to create the job (see below for implementation). Then configure the scheduler to use it: Quartz.IScheduler.JobFactory = kernel.Get<NinjectJobFactory>(); (or, alternatively: 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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题