我在使用依赖注入的项目中遇到循环依赖问题。环顾四周,似乎避免它的唯一方法,除了重组(我也做了一些),就是使用属性注入。我试过这个,它似乎没有帮助,但我不知道为什么。这是导致问题的路径。
Activation path:
6) Injection of dependency IUserRepository into property UserRepository of type ModelFactory{UserRole}
5) Injection of dependency IUserRoleFactory into parameter userRoleFactory of constructor of type UserRoleService
4) Injection of dependency IUserRoleService into property UserRoleService of type InternalUserBehavior
3) Injection of dependency IInternalUserBehavior into parameter internalUserBehavior of constructor of type UserRepository
2) Injection of dependency IUserRepository into parameter userRepository of constructor of type HomeController
1) Request for HomeController
现在,它似乎知道它正在使用属性注入,并且所有的行为和工厂都在同一个范围内(现在调用范围,但我也尝试过线程范围),以及 UserRepository。
我对这个过程的理解是它应该达到 4,并且能够实际创建对象。此时,它应该具有对 HomeController、IUserRepository 和 IInternalUserBehavior 的引用。然后它应该在 5 上工作,并将完成的 IUserRoleService 插入到 InternalUserBehavior 中。最后,它应该将先前实例化的用户存储库(因为它在同一范围内)插入到 ModelFactory 的属性中
所以我想我的问题的简短版本是:为什么属性注入不能解决我的循环依赖问题?