C# 调度器Quartz的依赖注入现在可以正常工作

C# 调度器Quartz的依赖注入现在可以正常工作,c#,.net-core,quartz.net,C#,.net Core,Quartz.net,我尝试使用Quartz SchedulerFactory,方法如下: 我正在IServiceCollection中添加一个调度程序工厂作为单例对象,如下所示: services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>(); 但当我尝试启动应用程序时,服务提供商会为命令处理程序抛出以下错误: private readonly ISchedulerFactory _schedulerFactory; p

我尝试使用Quartz SchedulerFactory,方法如下:

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

services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
但当我尝试启动应用程序时,服务提供商会为命令处理程序抛出以下错误:

    private readonly ISchedulerFactory _schedulerFactory;

    public TestCommandHandler(ISchedulerFactory schedulerFactory)
    {
        _schedulerFactory = schedulerFactory;
    }
尝试激活时无法解析类型“Quartz.isSchedulerFactory”的服务


尽管我已将isSchedulerFactory作为singleton添加到服务中,但为什么服务找不到它的实现?

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

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

var instance = new StdSchedulerFactory(/*whatever needed for initialization*/);
services.AddSingleton<ISchedulerFactory>(instance);
var instance=new StdSchedulerFactory(/*初始化所需的任何内容*/);
services.AddSingleton(实例);

Hi。也许IsSchedulerFactory有一些未注册的依赖项?就像您向StdSchedulerFactory中注入了一些东西,但您还没有在DI中注册它一样?将StdSchedulerFactory类添加到您的question@OlegIStdSchedulerFactory是随Quartz软件包附带的内置类,该类是IsSchedulerFactory的默认实现。我找到了一个解决方案,我通过使用
services.getService()
ant获得调度程序工厂的实例,它可以工作。如果您能够从IServiceProvider获得服务,但当您将其注入ctor时它不工作,则说明有问题。您是否在DI中注册了TestCommandHandler?因此,您可以执行以下操作:
newstdschedulerFactory(/*初始化所需的任何操作*/)