如何用Ninject和Quartz设置调度程序工厂:
||
我正在使用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,
文化=中立,
PublicKeyToken = af08829b84f0328e \'或
它的依赖项之一。系统
找不到指定的文件。
说明:未处理的异常
发生在执行
当前的Web请求。请检查
有关更多信息的堆栈跟踪
错误及其起源
代码。
异常详细信息:
System.IO.FileNotFoundException:可以
无法加载文件或程序集
\'Common.Logging,版本== 1.2.0.0,
文化=中立,
PublicKeyToken = af08829b84f0328e \'或
它的依赖项之一。系统
找不到指定的文件。
源错误:
第13行:受保护的覆盖
ISchedulerFactory
CreateInstance(IContext上下文)行
14:{第15行:var
schedulerFactory =新
StdSchedulerFactory();第16行:
返回schedulerFactory;第17行:
}
没有找到相关结果
已邀请:
0 个回复