【发布时间】:2017-06-13 09:59:14
【问题描述】:
我正在将 Hangfire 集成到应用程序 (MVC5 4.6) 中,以便安排通常由管理员用户每天晚上触发的日常同步任务。
问题是,我似乎无法让 Hangfire 与我当前的 Ninject 设置配合得很好。它不只是运行一个函数本身,我需要安装 Hangfire.Ninject 包并在 Startup.cs 中注册内核。
问题是,我的依赖项 A 包含依赖项 B,但依赖项 B 也包含依赖项 A(循环)。
由于这些是在 Ninject 内核设置中声明为 inRequestScope 的,这并没有引起任何问题,但是这个特定的项目在整个应用程序中被大量使用,尝试删除循环依赖会非常痛苦,但是由于某种原因,Hangfire 不会接受它。
是否有任何替代方法可以消除周期性依赖?
【问题讨论】:
-
您遇到的错误是什么?盲目射击:您可以在 A 的构造函数
public A (Func<B> factoryOfB){this.FactoryOfB = factoryOfB;}中使用 B 的工厂,这样您就可以延迟 B 的实例化和循环问题。见github.com/ninject/Ninject.Extensions.Factory/wiki/Func
标签: dependency-injection ninject asp.net-mvc-5 hangfire hangfire.ninject