Я использую 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:
}