ASP.NET Core 中集成的依赖注入可以扫描模块的依赖关系吗?

问题描述 投票:0回答:2

我有一个主要的 ASP.NET Core Web Api 项目,它消耗多个项目,但我遵循干净架构,所有接口都放在一个核心项目中,有模块项目(基础设施)定义实现。主项目仅引用核心项目,而不了解基础设施。

这意味着我们需要扫描模块的依赖关系,并使用核心项目中定义的相应接口自动连接实现。

更具体地说,假设我有一个接口 IA(在核心项目中)和一个实现 A(在基础设施中),传统上如果主项目引用两者,我们可以像这样手动注册依赖项:

public void ConfigureServices(IServiceCollection services){
   services.AddTransient<IA, A>();
}

但是,对于干净的架构,我们在设计时只有

IA
可用,在这种情况下我们如何扫描和连接实现
A

如果 ASP.NET Core 中的集成依赖注入无法实现这一点,我会对替代解决方案感兴趣(例如

Autofac
)。这里最棘手的部分仍然不是手动注册,而是自动连接(扫描)。

c# asp.net-core dependency-injection autofac
2个回答
1
投票

再创建一个名为 dependencyinjection 的项目,添加接口和基础设施的引用,并使其成为复合根。在第二步中,给 coreweb api 提供依赖注入的参考,并在startup.cs中的configureservices中使用依赖注入


0
投票

应用程序的外壳(ASP.NET Core 应用程序、主项目)取决于核心层和基础设施层。它也是您构建服务注册的组合根。

基础设施 - 取决于核心

Shell(主程序)- 取决于核心和基础设施

您的控制器使用 Core 中的抽象,但组合根中的注册将基础架构链接到核心。

© www.soinside.com 2019 - 2024. All rights reserved.