我正在开发一个具有三层的应用程序:应用程序,基础架构和域。 应用程序层是WebApi,其余的是类库。 基础结构层取决于域和应用程序层。 应用程序层仅引用域层。
App层定义了基础结构层实现的接口。
应用引用域。 下文引用域。 红外线参考应用程序。
但是,现在我正在通过Startup类配置依赖项注入,代表应用程序层的项目需要引用基础结构项目,这会导致循环依赖。
有人可以帮我解决这个问题吗?
感谢所有人!
答案 0 :(得分:1)
App层定义了基础结构层实现的接口。
这是最有可能导致此问题的原因。
如果您遵循Dependency Inversion Principle,那么正如APPP所说的,“客户端拥有抽象接口”。
对于像OP中描述的那样的三层应用程序体系结构,意味着接口应该在域模型中定义,而不是在顶层应用程序层中定义。在我的博客here上了解有关分层应用程序体系结构和依赖注入的更多信息。
答案 1 :(得分:0)
为此,请不要在WebApi或任何其他可执行项目中定义接口。任何试图实现这种接口的类库都必须依赖整个WebApi项目!你真的不想要那个。因此,在这种情况下,我会将那些接口分离到自己的类库中,这样做会很麻烦。我认为将它们移至基础架构将破坏控制反转的整个概念