【发布时间】:2014-05-20 08:35:08
【问题描述】:
在 LightInject 中检测到递归依赖问题。
我有两个相互接受的业务服务,因此我得到一个检测到递归依赖的错误。有人想出解决方法吗?我确信在结构图中是有效的。
所以我有类似的东西:
public class RetailerService : IRetailerService
{
private readonly IUserService _userService;
public RetailerService(IUserService userService)
{
_userService = userService;
}
和
public class UserService : IUserService
{
private readonly IRetailerService _retailerService;
public UserService(IRetailerService retailerService)
{
_retailerService = retailerService;
}
每个人都需要互相打电话。例如,当我加载用户时,我会加载零售商,它是对零售商服务的调用;当我添加零售商时,我需要验证用户,它是对 userService 的调用。
提前致谢。
【问题讨论】:
-
这不是 IoC 框架的问题,你犯了一个无法解决的问题。首先找到一种您可以在逻辑上手动构建这两个对象的方法,然后我们可以看到我们将如何欺骗 IoC 框架为您执行此操作。我也质疑这里的责任。您可能希望将两者一分为三,创建一个可以加载用户 + 零售商或零售商 + 用户的新服务,而这两个不知道另一个。
-
StructureMap 无法为您解决这个问题。如果您尝试手动构建对象图,您将无法进行此编译。
-
好吧,伙计们,我已经重新设计了服务并从用户服务中删除了retailservice 依赖项。
标签: c# dependency-injection ioc-container