当前位置: 首页 > 知识库问答 >
问题:

集成的依赖注入能否在ASP.NET核心扫描模块的依赖?

秋兴思
2023-03-14

我有一个主要的ASP.NET核心Web API项目,它消耗多个项目,但我遵循清洁架构,所有接口都放在一个核心项目中,有模块项目(基础设施)定义实现。主要项目只是引用核心项目,而不知道基础设施。

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

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

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

然而,对于干净的架构,我们在设计时只有IA可用,在这种情况下,我们如何扫描和连接实现A

如果这是不可能的,与ASP.NET核心集成依赖注入,可以请你给我看一些替代解决方案(如<代码> Autofac )。这里最棘手的部分不是手动注册,而是自动布线(扫描)。谢了。

共有2个答案

章鸿光
2023-03-14

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

基础架构 - 依赖于核心

外壳(主程序) - 取决于核心和基础结构

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

叶茂才
2023-03-14

再创建一个名为依赖注入的项目,添加接口和基础结构的引用,并使其成为复合根。在第二步中,将依赖关系注入的引用提供给coreweb api,并在启动时在配置服务中使用依赖关系注入.cs

 类似资料:
  • 我的大多数服务通常与crud方法相同

  • 我需要ASP。Net核心依赖注入,将一些参数传递给实现ICardPaymentRepository接口的GlobalRepositoryClass的构造函数。 参数是用于配置的,来自配置文件和数据库,我不希望我的类去引用数据库和配置本身。 我认为工厂模式是实现这一点的最佳方式,但我想不出使用工厂类的最佳方式。工厂类本身依赖于配置和数据库。 我的创业公司目前看起来像这样: GlobalReposit

  • 我有一个.NET core项目,并且正在尝试使用授权选项创建自定义策略,如此处的文档所示: ASP.NET.Core授权-需求处理程序中的依赖注入 这些示例显示了使用 1 个参数(一个简单的 int 值)设置授权要求。我的自定义要求需要一个字符串参数以及一个 DbContext 对象。我想在运行时将 DbContext 注入到需求的构造函数中。我正在使用 Autofac 容器。我不确定如何实现这一

  • 如何在.NET核心库项目中将一个类注入另一个类?在API项目中的StartUp类ConfigureServices中,我应该在哪里配置DI?

  • 让我们创建一个名为的新模块,并在那里定义CounterService。 app/shared/shared.module.ts 现在我们将引入 SharedModule 到AppModule 和中。 app/lazy/lazy.module.ts 使用此配置,两个模块的组件都可以访问CounterService。 我们将以完全相同的方式在EagerComponent和LazyComponent中使

  • 问题内容: 当前在app.js中,我有以下路线: 如您所见,我正在尝试注入Path依赖项。尽管我收到一条错误消息,说找不到该提供程序。我认为这是因为配置模块提供程序首先执行。以下是“ services.js”中我的路径提供程序定义 我怎样才能将此提供程序注入配置模块? 问题答案: 在中,只能使用提供程序(例如)。在你只能使用服务(如实例)。您有一家工厂,而不是供应商。请参阅具有以下三种创建方式的代