应用程序和基础层之间的循环引用.Net Core

时间:2019-06-17 14:28:02

标签: asp.net dependency-injection domain-driven-design inversion-of-control project

我正在开发一个具有三层的应用程序:应用程序,基础架构和域。 应用程序层是WebApi,其余的是类库。 基础结构层取决于域和应用程序层。 应用程序层仅引用域层。

App层定义了基础结构层实现的接口。

应用引用域。 下文引用域。 红外线参考应用程序。

但是,现在我正在通过Startup类配置依赖项注入,代表应用程序层的项目需要引用基础结构项目,这会导致循环依赖。

有人可以帮我解决这个问题吗?

感谢所有人!

2 个答案:

答案 0 :(得分:1)

  

App层定义了基础结构层实现的接口。

这是最有可能导致此问题的原因。

如果您遵循Dependency Inversion Principle,那么正如APPP所说的,“客户端拥有抽象接口”。

对于像OP中描述的那样的三层应用程序体系结构,意味着接口应该在域模型中定义,而不是在顶层应用程序层中定义。在我的博客here上了解有关分层应用程序体系结构和依赖注入的更多信息。

答案 1 :(得分:0)

为此,请不要在WebApi或任何其他可执行项目中定义接口。任何试图实现这种接口的类库都必须依赖整个WebApi项目!你真的不想要那个。因此,在这种情况下,我会将那些接口分离到自己的类库中,这样做会很麻烦。我认为将它们移至基础架构将破坏控制反转的整个概念