Dependency injection 如何在.net核心类库中注册服务

Dependency injection 如何在.net核心类库中注册服务,dependency-injection,architecture,Dependency Injection,Architecture,所以,我的问题是具体的,但本质上是体系结构的,但肯定可以用技术答案回答,所以我希望stackoverflow而不是stackexchange是正确的地方 我有一个项目的“干净架构”设置。因此,asp.net core 3.1 razor pages UI通过Restful web API与后端对话。瘦asp.net core 3.1 API控制器然后与应用层类库项目对话,该项目使用CQR将内容发送到域核心或访问数据访问层进行查询。都很标准 我的依赖项设置如下: UI不依赖于任何其他层 API层

所以,我的问题是具体的,但本质上是体系结构的,但肯定可以用技术答案回答,所以我希望stackoverflow而不是stackexchange是正确的地方

我有一个项目的“干净架构”设置。因此,asp.net core 3.1 razor pages UI通过Restful web API与后端对话。瘦asp.net core 3.1 API控制器然后与应用层类库项目对话,该项目使用CQR将内容发送到域核心或访问数据访问层进行查询。都很标准

我的依赖项设置如下:

  • UI不依赖于任何其他层
  • API层依赖于应用层
  • 应用程序层依赖于域层
  • 域层不依赖于任何其他层
  • 数据访问层是另一个.net核心类库,它依赖于应用层和域层
因此,通过应用程序层和域层公开数据访问接口(数据访问层实现这些接口以提供这些服务),可以正确地反转依赖关系。所有这些都是相当标准的

所以我的问题是:

我正在使用我的Api启动类注册Api和应用层的一般类依赖项,通过应用层通过注册域层的任何服务等“传递”的基本扩展方法调用。但是在这个设置中

Q:如何为数据访问层注册服务?

我一直允许从UI依赖数据访问层,并从那里调用扩展方法来注册服务,但这感觉不对!到底为什么UI要为数据访问层所做的事情而烦恼,即使它们都生活在基础设施环中

但我也不希望Api层对DAL有依赖性,因为这不是它所关心的。看来DAL对我来说真的不应该有什么关系

我的想法转向了在类库中注册服务的问题,因为类库中没有启动类

Q:这可能吗?

Q:我是否缺少一些基本概念?

提前谢谢

问:如何为数据访问层注册服务

这是你在内心深处做的事情

我一直允许从UI依赖数据访问层,并从那里调用扩展方法来注册服务,但这感觉不对


您可能弄错了UI层和组合根(层)等层,它们是逻辑构件,而程序集是部署构件。您隐式地决定在同一程序集中有两个层。详细介绍了这一点。

谢谢,我来看看