【问题标题】:Lightinject - Recursive dependency detectedLightinject - 检测到递归依赖
【发布时间】: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


【解决方案1】:

这是一种难闻的气味,首先应该避免。但是您可以使用property injection 创建一个解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2013-08-19
    • 2015-03-06
    • 2016-12-14
    相关资源
    最近更新 更多