.NET Core 3.1多层依赖注入问题:无法解析服务实例求助
问题解决方法
核心原因
你遇到的错误是因为ASP.NET Core的依赖注入容器中没有注册IUsuariosService接口与它的实现类UsuariosService的映射关系,容器无法找到该接口对应的实例来注入到控制器中。
具体修复步骤
1. 注册服务层接口与实现
在Startup.cs的ConfigureServices方法中,添加IUsuariosService的注册代码,和仓储的注册放在一起:
public void ConfigureServices(IServiceCollection services) { ... services.AddControllers(); services.AddScoped<IUsuariosRepo, UsuariosRepo>(); // 添加这行代码,注册服务层的接口与实现 services.AddScoped<IUsuariosService, UsuariosService>(); ... }
2. 优化服务层的依赖注入(可选但推荐)
当前UsuariosService的构造函数直接依赖具体的UsuariosRepo类,不符合依赖倒置原则,建议改为依赖IUsuariosRepo接口,这样后续更换仓储实现时无需修改服务层代码:
修改UsuariosService的代码:
namespace Application.Services { public class UsuariosService : IUsuariosService { // 将具体类改为接口 private readonly IUsuariosRepo _repository; // 构造函数参数改为接口 public UsuariosService(IUsuariosRepo repository) { _repository = repository; } // 其余代码保持不变... } }
验证修复
完成上述修改后,重新启动项目,发起GET /api/usuarios请求,错误即可解决。
内容的提问来源于stack exchange,提问作者Paulo Vitor
相关产品推荐
相关产品推荐

