c# - Scheduler Quartz 的依赖注入现在可以正常工作
问题描述
我正在尝试以这种方式使用 Quartz SchedulerFactory:
我在 IServiceCollection 中将调度程序工厂添加为单例对象,如下所示:
services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
在此之后,我有一个命令处理程序,我试图在命令处理程序的构造函数中注入这个 SchedulerFactory:
private readonly ISchedulerFactory _schedulerFactory;
public TestCommandHandler(ISchedulerFactory schedulerFactory)
{
_schedulerFactory = schedulerFactory;
}
但是当我尝试启动应用程序时,服务提供商会为命令处理程序抛出此错误:
尝试激活时无法解析类型“Quartz.ISchedulerFactory”的服务
为什么服务找不到 ISchedulerFactory 的实现,尽管我已将它作为单例添加到服务中?
解决方案
由于您使用的是应用程序生命周期范围,因此您可以创建一个实例并将其注册为“单例”。
这排除了导致此类错误的任何非托管依赖项,例如 COM 组件的注册。
var instance = new StdSchedulerFactory(/*whatever needed for initialization*/);
services.AddSingleton<ISchedulerFactory>(instance);
推荐阅读
- django - supervisord 作为服务和敏感的环境变量
- select - 从 bigquery 输出中,供应商希望每行以分隔符结尾
- entity-framework-core - 禁用 EF Core 迁移验证查询
- javascript - 嵌套的 ReactiveForms 控件没有收到 ngSubmit 事件
- r - 当每一层都有一个变量时的ggplot2图例
- node.js - 从多个项目中的一个 mongodb 集合中获取数据
- php - Laravel - 我如何处理可变队列名称
- javascript - 我如何 RegEx 声明但未实例化的 JavaScript 变量?
- batch-file - 遍历文本文件以查找字符串批处理
- r - 如何根据因子级别组合多行?