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

Circular reference between app and infra layers .Net Core

我正在开发一个具有三层的应用程序:应用程序、基础结构和域。 应用层是一个WebApi,其余都是Class库。 基础设施层依赖于领域和应用层。 应用层只引用领域层

应用层定义基础设施层实现的接口。

应用程序引用域。 Infra 参考域。 基础设施参考应用程序

但是,现在我在配置依赖注入,viaStartupclass,代表应用层的项目需要引用基础设施项目,这就造成了循环依赖。

谁能帮我解决这个问题?

感谢大家!

只是不要为此在 WebApi 或任何其他可执行项目中定义接口。任何试图实现此类接口的 class 库都被迫依赖于整个 WebApi 项目!你真的不想要那个。所以在这种情况下,我会将这些接口分离到它们自己的 class 库中,这样你就可以打破循环。我认为将它们移动到基础架构会破坏控制反转的整个概念

The App layer defines interfaces that the infrastructure layer implements.

这是问题最可能的原因。

如果你按照Dependency Inversion Principle, then, as APPP的说法,"clients [...] own the abstract interfaces"。

对于像 OP 中描述的那样的 three-layer 应用程序架构,这意味着接口应该在域模型中定义,而不是在顶级应用程序层中。在我的博客 here.

上阅读有关分层应用程序架构和依赖注入的更多信息