我有一门叫做汽车的课程
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 问题线程,并尝试了所有这些解决方案,但从未得到可以应用于预先存在的代码库的直接答案。
使用 Hangfire 时,您不必直接与 DI 合作。它可以是您的应用程序的一个单独的部分。 Hangfire 只是用于调用可以属于类的一部分的方法,该类确实在其构造函数中注入了依赖项。
如果您在 DI 框架中正确注册了
Driver
、EngineInfo
和 Logger
类,那么在上面的示例中,当调用 Drive()
方法时,依赖关系应该已经满足。