网站首页 > 教程分享 正文
前言
通常,我们使用依赖注入时,一个接口仅对应一种实现,使用时可以直接得到实现类的实例,类似这样:
services.AddScoped<IServiceA,ServiceA>();
public WeatherForecastController(IServiceA service) { }
但是,有时可能需要在同一ASP.NET Core 应用程序中使用同一接口的不同实现。
下面是不同需求下对应的解决方案。
为不同的类型使用不同实现
例如仓储接口IRepository<>,默认使用EF core访问关系型数据库,而对于特定实体(例如订单Order)使用MONGODB存储。
可以首先注册默认实现,再针对特定实体注册指定实现:
services.AddScoped(typeof(IRepository<>), typeof(EFCoreRepository<>));
services.AddScoped(typeof(IRepository<Order>), typeof(MongoRepository<Order>));
在不同的Controller中使用不同实现
例如订单仓储接口IRepository,默认使用MONGODB存储,而在报表服务ReportController中访问ES。
可以针对构造函数注册指定参数:
services.AddScoped<ESRepository<Order>>();
services.AddScoped(x => new ReportController(x.GetRequiredService<ESRepository<Order>>()));
注意:以上方式需要使用命令将Controller添加为服务才能使用:
services.AddControllers().AddControllersAsServices();
猜你喜欢
- 2025-05-08 ASP.NET Core项目实战:短信功能与分布式限流
- 2025-05-08 ASP.NET Core 本地化技巧,让你的应用瞬间支持多语言
- 2025-05-08 ASP.NET Core 学习笔记 第三篇 依赖注入框架的使用
- 2025-05-08 初识.Net Core Mvc(session 登录+查询)
- 2025-05-08 Winform开发技术详解 - 应用环境 & 相关技术介绍
- 2025-05-08 ASP.NET 8 写扩展(asp.net viewbag)
- 2025-05-08 如何在服务器端使用ASP.NET Core 2创建甘特图?
- 2025-05-08 Asp.Net Core + jenkins 实现自动化发布
- 2025-05-08 Asp.Net在线预览Word文档的解决方案与思路
- 2025-05-08 Asp.NET Core一个接口的多个实现如何基于当前HTTP请求注册
你 发表评论:
欢迎- 最近发表
-
- IT之家学院:使用PIN或密码审批管理员权限
- Yarn 安装的时候提示错误 error:0308010C:digital envelope routines
- Windows常用的一些CMD运行命令(windows常见的命令)
- 电脑忘记开机密码10秒解决(戴尔电脑忘记开机密码10秒解决)
- 如何下载Windows 10聚焦提供的锁屏壁纸
- Windows CMD 命令大全:简单粗暴收藏!
- 系统小技巧:解决CHKDSK只读模式问题
- Windows的cmd都有哪些奇技淫巧?这22个CMD命令记得收藏起来!
- windows错误代码0x80072EE2?win10系统更新错误问题的处理方法
- Windows 10技术预览版快捷键方式汇总
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)