依赖注入循环依赖

时间:2011-09-12 11:12:40

标签: dependency-injection circular-dependency

我已经开始了一个新项目,并且已经使用ninject和工作单元模式逐步构建我的服务层。我遇到了一个问题,正在寻求帮助。

我有一个LicenceService需要访问UserService所以构造函数是

public LicenceService(IRepository<Licence> licenceRepo, IUserService userService)

但是我现在处于UserService需要访问LicenceService的情况,因此构造函数将是

public UserService(IRepository<User> userRepo, ILicenceService licenceService)

我猜这点你可以看到我的循环引用问题。想象一下,任何人都有任何合适的解决方案,这不是一个罕见的问题。

2 个答案:

答案 0 :(得分:3)

第三个服务如何保存对它们的引用并在它们之间进行通信?

也就是说,第三项服务会出于特定目的调用这两种服务,而不是必须知道另一种服务。

答案 1 :(得分:3)

您可以通过工厂或代表解决此问题,但实际上这是一个设计问题。看看你是否可以将一些代码分解为第三类来删除循环依赖。