asp.net – Quartz.net和Ninject:如何使用NInject将实现绑定到
发布时间:2020-12-16 09:13:40 所属栏目:asp.Net 来源:网络整理
导读:我实际上在ASP.Net MVC 4 Web应用程序中工作,我们使用NInject进行依赖注入.我们还使用基于Entity框架的UnitOfWork和Repositories. 我们想在我们的应用程序中使用Quartz.net定期启动一些自定义作业.我希望NInject自动绑定我们工作中需要的服务. 它可能是这样
我实际上在ASP.Net MVC 4 Web应用程序中工作,我们使用NInject进行依赖注入.我们还使用基于Entity框架的UnitOfWork和Repositories.
我们想在我们的应用程序中使用Quartz.net定期启动一些自定义作业.我希望NInject自动绑定我们工作中需要的服务. 它可能是这样的: public class DispatchingJob : IJob { private readonly IDispatchingManagementService _dispatchingManagementService; public DispatchingJob(IDispatchingManagementService dispatchingManagementService ) { _dispatchingManagementService = dispatchingManagementService ; } public void Execute(IJobExecutionContext context) { LogManager.Instance.Info(string.Format("Dispatching job started at: {0}",DateTime.Now)); _dispatchingManagementService.DispatchAtomicChecks(); LogManager.Instance.Info(string.Format("Dispatching job ended at: {0}",DateTime.Now)); } } 到目前为止,在我们的NInjectWebCommon绑定中配置如下(使用请求范围): kernel.Bind<IDispatchingManagementService>().To<DispatchingManagementService>(); 是否可以使用NInject将正确的实现注入我们的自定义作业?怎么做?我已经阅读了很少关于堆栈溢出的帖子,但是我需要一些建议和一些使用NInject的例子. 解决方法
在Quartz计划中使用JobFactory,并在那里解析您的作业实例.
所以,在你的NInject配置中设置工作(我在这里猜测正确的NInject语法) // Assuming you only have one IJob kernel.Bind<IJob>().To<DispatchingJob>(); 然后,创建一个JobFactory:[编辑:这是@BatteryBackupUnit’s answer here的修改版本] public class NInjectJobFactory : IJobFactory { private readonly IResolutionRoot resolutionRoot; public NinjectJobFactory(IResolutionRoot resolutionRoot) { this.resolutionRoot = resolutionRoot; } public IJob NewJob(TriggerFiredBundle bundle,IScheduler scheduler) { // If you have multiple jobs,specify the name as // bundle.JobDetail.JobType.Name,or pass the type,whatever // NInject wants.. return (IJob)this.resolutionRoot.Get<IJob>(); } public void ReturnJob(IJob job) { this.resolutionRoot.Release(job); } } 然后,在创建调度程序时,将JobFactory分配给它: private IScheduler GetSchedule(IResolutionRoot root) { var schedule = new StdSchedulerFactory().GetScheduler(); schedule.JobFactory = new NInjectJobFactory(root); return schedule; } 然后Quartz将使用JobFactory创建作业,NInject将为您解析依赖项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .NET图表控件 – 轴X文本旋转
- asp.net-mvc – 具有DateTime的MVC 3编辑器模板
- ASP.NET中的Akka.NET actor系统
- asp.net – 将图像转换为字节以存储在数据库中
- ASP.NET MVC 4和会话安全漏洞
- asp.net – CORS错误 – 请求的资源上没有“Access-Control
- asp.net – 找出合适的工作语言:从C#分支出来
- IIS虚拟目录和ASP.NET目录路径
- asp.net-mvc-3 – 如何模拟httpcontext使单元测试不为空?
- asp.net – ASP Core,Identity Server 4和Angular 2中的外部
推荐文章
站长推荐
- ASP.NET代码格式化工具
- 如何在ASP.NET 3.5中使per- http请求缓存
- 将ASP.NET Web窗体托管为Windows Azure网站
- asp.net-mvc – ControllerActionInvoker
- asp.net-mvc – 创建ASP.NET MVC控件或帮助器的最
- asp.net – 无效的回发或回调参数.为什么?
- 如何在asp.net按钮回发之前运行javascript函数
- 当我与Fiddler核实时,为什么我的asp.net mvc应用
- 发布asp.net网站给出“对象引用未设置为对象的实
- asp.net-core – Asp.Net 5 MVC 6 Startup.cs Be
热点阅读