Как настроить фабрику планировщика с помощью Ninject и Quartz: - PullRequest
0 голосов
/ 15 мая 2011

Я использую Quartz и Ninject, и мне очень хотелось бы иметь возможность автоматически привязывать GetScheduler (подобно тому, как вы можете автоматически связывать сессии с помощью ninject и nihbernate).

// construct a scheduler factory
ISchedulerFactory schedFact = new StdSchedulerFactory();

// get a scheduler
IScheduler sched = schedFact.GetScheduler();

Что бы я хотел сделать, это

public class MyService
{
   private readonly IScheduler sched;

   public MyService(IScheduler sched)
   {
       this.sched = sched;
   }

   public void Test()
    {
         sched.Start();
         // go on.
     }
}

Поэтому, когда я вызываю MySerivce, он должен увидеть IScheduler, получить от факторинга планировщик и передать его внутрь.

Это было единственной вещью, которую я мог найти на ней, и она кажется более продвинутой, чем я хочу, и находится в настройке службы Windows, где я использую asp.net mvc 3.

Редактировать

Это то, что я дошел до сих пор, но все еще вылетает

public class QuartzSchedulerFactoryProvider : Provider<ISchedulerFactory>
    {
        protected override ISchedulerFactory CreateInstance(IContext context)
        {
            var schedulerFactory = new StdSchedulerFactory();
            return schedulerFactory;
        }
    }

    public class NhibernateSessionFactoryProvider : Provider<ISessionFactory>
    {   
        protected override ISessionFactory CreateInstance(IContext context)
        {
            var sessionFactory = new NhibernateSessionFactory();
            return sessionFactory.GetSessionFactory();
        }
    }

     public class QuartzModule : NinjectModule
    {
        public override void Load()
        {
            Bind<ISchedulerFactory>().ToProvider<QuartzSchedulerFactoryProvider>().InSingletonScope();
            Bind<IScheduler>().ToMethod(context => context.Kernel.Get<ISchedulerFactory>().GetScheduler()).InRequestScope();
        }
    }



        protected IKernel CreateKernel()
        {
            var modules = new INinjectModule[]
                              {
                                 new QuartzModule()
                              };

            return new StandardKernel(modules);
        }

Не удалось загрузить файл или сборку Common.Logging, версия = 1.2.0.0, Culture = нейтрально, PublicKeyToken = af08829b84f0328e 'или одна из его зависимостей. Система не могу найти указанный файл. Описание: необработанное исключение произошло во время исполнения текущий веб-запрос. Пожалуйста, просмотрите трассировка стека для получения дополнительной информации о ошибка и откуда она возникла код.

Сведения об исключении: System.IO.FileNotFoundException: может не загружать файл или сборку Common.Logging, версия = 1.2.0.0, Culture = нейтрально, PublicKeyToken = af08829b84f0328e 'или одна из его зависимостей. Система не могу найти указанный файл.

Ошибка источника:

Строка 13: защищенное переопределение ISchedulerFactory Строка CreateInstance (контекст IContext) 14: {Строка 15: вар schedulerFactory = new StdSchedulerFactory (); Строка 16:
вернуть schedulerFactory; Строка 17:
}

...