如何通过 Hangfire 中的构造函数将依赖项传递给排队类

问题描述 投票:0回答:1

我有一门叫做汽车的课程

public class Car : ICar
{
    private readonly Driver driver;
    private readonly EngineInfo engineInfo;
    private readonly Logger logger;

    public Car(Driver driver, EngineInfo engineInfo, Logger logger)
    {
        this.driver = driver;
        this.engineInfo = engineInfo;
        this.logger = logger;
    }

    public void Drive()
    {
       // Your Drive() logic here, using the driver, engineInfo, and logger objects.
    }
}

我正在尝试使用hangfire 来调用Car.Drive()。使用

Client.Enqueue<Car>(c => c.Drive());

当我这样做时,它总是要求 Car 有一个无参数构造函数。当我添加它时,在调用驱动器之前,我无法再将驱动程序、引擎信息或记录器传递给对象。我也尝试过JobActivators,但没有效果。

有更多 HangFire 知识的人可以帮助我吗?我希望能够调用一个参数化汽车构造函数,这样我就可以给它一个驱动程序等,然后调用drive。

我看过近十个关于hangfire的教程,他们都避免了这部分过程。他们排队的作业从来都不是自定义数据类型方法调用。

我已经阅读了大量的 stackoverflow 帖子和 github 问题线程,并尝试了所有这些解决方案,但从未得到可以应用于预先存在的代码库的直接答案。

c# asp.net .net dependency-injection hangfire
1个回答
0
投票

使用 Hangfire 时,您不必直接与 DI 合作。它可以是您的应用程序的一个单独的部分。 Hangfire 只是用于调用可以属于类的一部分的方法,该类确实在其构造函数中注入了依赖项。

如果您在 DI 框架中正确注册了

Driver
EngineInfo
Logger
类,那么在上面的示例中,当调用
Drive()
方法时,依赖关系应该已经满足。

© www.soinside.com 2019 - 2024. All rights reserved.