You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6中如何转换.NET 5的AddScoped依赖注入代码?

正确的.NET 6转换写法

你的问题出在两个关键错误上:

  • 依赖注入注册时泛型参数顺序颠倒,正确顺序是先写接口/抽象服务类型,再写具体实现类类型
  • IRepository的泛型参数<Service>被遗漏,导致无法匹配对应的泛型仓储实现

.NET 6只是在项目模板中把原有的services实例换成了builder.Services,但依赖注入的核心注册规则和.NET 5及更早版本完全一致。正确的转换代码如下:

builder.Services.AddControllers();
builder.Services.AddScoped<IRepository<Service>, ServiceRepository>();

补充说明:
AddScoped<TService, TImplementation>的泛型参数是强约束的,TService定义了依赖注入时对外暴露的服务类型,TImplementation是该服务的具体实现类,二者顺序不能调换;同时泛型接口的类型参数必须完整声明,否则无法完成类型匹配。

内容的提问来源于stack exchange,提问作者user21497668

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:13:07