NInject和Quartz.net问题

时间:2015-12-07 17:32:57

标签: c# dependency-injection ninject

我一直在使用ninject阅读DI和Quartz.net,我无法让它运行。我试图关注this链接。这是我的代码:

这是工作:

    public class ClientsImportJob : IJob
{
    private readonly IUserClientImportService _userClientImportService;

    public ClientsImportJob(IUserClientImportService userClientImportService)
    {
        _userClientImportService = userClientImportService;
    }

    public void Execute(IJobExecutionContext context)
    {
        _userClientImportService.ProcessFiles();

    }       
}

这是工厂:

    public class NInjectJobFactory : SimpleJobFactory
{
    readonly IKernel _kernel;

    public NInjectJobFactory(IKernel kernel)
    {
        this._kernel = kernel;
    }

    public override IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    {
        try
        {
            return (IJob) this._kernel.Get(bundle.JobDetail.JobType); // will inject dependencies that the job requires
        }
        catch (Exception e)
        {
            throw new SchedulerException(string.Format("Problem while instantiating job '{0}' from the NinjectJobFactory.", bundle.JobDetail.Key), e);
        }
    }
}

这就是我称之为scheduller的地方:

    public class QuartzService
{

    public static void ScheduleImportTask()
    {
        var kernel = InitializeNinjectKernel();
        var scheduler = kernel.Get<IScheduler>();

        scheduler.ScheduleJob(
            JobBuilder.Create<ClientsImportJob>().Build(),
            TriggerBuilder.Create().WithSimpleSchedule(s => s.WithIntervalInSeconds(10).RepeatForever()).Build());
        scheduler.Start();

    }

    private static IKernel InitializeNinjectKernel()
    {
        var kernel = new StandardKernel();

        kernel.Bind<IScheduler>().ToMethod(x =>
        {
            var sched = new StdSchedulerFactory().GetScheduler();
            sched.JobFactory = new NInjectJobFactory(kernel);
            return sched;
        });

        kernel.Bind<IUserClientImportService>().To<UserClientImportService>();

        return kernel;
    }

}

我做错了什么?

0 个答案:

没有答案