首页 > 解决方案 > Scheduler Quartz 的依赖注入现在可以正常工作

问题描述

我正在尝试以这种方式使用 Quartz SchedulerFactory:

我在 IServiceCollection 中将调度程序工厂添加为单例对象,如下所示:

services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();

在此之后,我有一个命令处理程序,我试图在命令处理程序的构造函数中注入这个 SchedulerFactory:

    private readonly ISchedulerFactory _schedulerFactory;

    public TestCommandHandler(ISchedulerFactory schedulerFactory)
    {
        _schedulerFactory = schedulerFactory;
    }

但是当我尝试启动应用程序时,服务提供商会为命令处理程序抛出此错误:

尝试激活时无法解析类型“Quartz.ISchedulerFactory”的服务

为什么服务找不到 ISchedulerFactory 的实现,尽管我已将它作为单例添加到服务中?

标签: c#.net-corequartz.net

解决方案


由于您使用的是应用程序生命周期范围,因此您可以创建一个实例并将其注册为“单例”。

这排除了导致此类错误的任何非托管依赖项,例如 COM 组件的注册。

var instance = new StdSchedulerFactory(/*whatever needed for initialization*/);
services.AddSingleton<ISchedulerFactory>(instance);

推荐阅读