Asp.net 应用程序和infra layers.Net Core之间的循环引用

Asp.net 应用程序和infra layers.Net Core之间的循环引用,asp.net,dependency-injection,domain-driven-design,inversion-of-control,project,Asp.net,Dependency Injection,Domain Driven Design,Inversion Of Control,Project,我正在开发一个有三层的应用程序:应用程序、基础设施和域。 应用层是一个WebApi,其余的是类库。 基础架构层取决于域和应用程序层。 应用程序层仅引用域层 应用层定义了基础结构层实现的接口 应用程序引用域。 Infra引用域。 Infra参考应用程序 然而,现在我正在配置依赖注入,viaStartup类,表示应用层的项目需要引用基础设施项目,这导致了循环依赖 有谁能帮我解决这个问题吗 谢谢大家 只是不要在WebApi或任何其他可执行项目中定义接口。任何试图实现这样一个接口的类库都必须依赖于整个W

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

应用层定义了基础结构层实现的接口

应用程序引用域。 Infra引用域。 Infra参考应用程序

然而,现在我正在配置依赖注入,viaStartup类,表示应用层的项目需要引用基础设施项目,这导致了循环依赖

有谁能帮我解决这个问题吗


谢谢大家

只是不要在WebApi或任何其他可执行项目中定义接口。任何试图实现这样一个接口的类库都必须依赖于整个WebApi项目!你真的不想那样。所以在本例中,我将把这些接口分离到它们自己的类库中,这样做会打破这个循环。我认为将它们转移到基础设施将打破控制反转的整个概念

应用层定义了基础结构层实现的接口

这是问题最可能的原因

如果您遵循抽象接口,那么,正如所说,“客户机[…]拥有抽象接口”


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

这里有一个问题:
应用程序层定义了基础结构层实现的接口
-为什么?将您的接口保持在基础架构中-如果应用程序层使用了LoggerService,那么应用程序应该负责连接(DI容器),例如,它的接口和实现应该在底层?是的,这很有意义正确的方法与本文类似?(见图片)相关: