【发布时间】:2022-02-13 04:35:32
【问题描述】:
我正在 .NET Core 3.1 中构建 API。我尝试在典型的 3 层中解耦这个项目。我没有 UI 层,而是拥有带有控制器的 API 项目。我还有一个用于逻辑的类库项目,以及另一个作为数据访问层的类库项目。
我正在尝试对所有项目使用依赖注入。我的问题是,到目前为止,我在我的 API 项目中的startup.cs 中的ConfigureServices 方法中将我的接口和类注册为服务。
但这意味着逻辑和数据访问层将引用 API 项目。为了解决这个问题,我想,如果我将 DI 容器移动到他自己的“映射”类库项目中并在所有其他项目中引用它,那将是最好的。这是一个好习惯吗?
如果是,这样的项目会是什么样子,如何设置容器以及如何在 API 的项目 ConfigureServices 方法中实例化 startup.cs?
【问题讨论】:
-
将容器留在 startup.cs(API 层)中,但在数据层中调用一个函数(使用 IServiceCollection),然后注册它自己的服务。
-
@Neil 感谢您的回答,但我也必须对逻辑层做同样的事情。我不确定。
-
我一般做的就是Presentation layer (API)会调用逻辑层,而逻辑层会调用数据层。
-
@Neil 并像“参考”链一样构建。我明白了。
标签: c# .net-core dependency-injection ioc-container