Blazor依赖注入报错:无法提供BuscarClaseServicio服务实例
Blazor依赖注入异常解决方法
异常原因很明确:你在Program.cs中仅注册了**接口IBuscarClase**与实现类BuscarClaseServicio的映射关系,但Blazor页面中直接注入的是具体实现类BuscarClaseServicio,DI容器中没有该具体类型的注册项,因此抛出找不到服务的异常。
以下是两种解决方式:
方案一(推荐,符合依赖倒置原则)
将页面中的注入代码改为注入接口类型:
[Inject] protected IBuscarClase busquedaClaseServicio { get; set; }
这样DI容器会根据你已注册的接口-实现类映射,自动提供BuscarClaseServicio的实例。这种方式能保持代码的可扩展性,后续更换实现类时仅需修改Program.cs的注册逻辑,无需改动页面代码。
方案二(不推荐,临时应急)
若必须注入具体实现类,需要在Program.cs中单独注册该类:
// 可保留原接口注册,或单独添加这行 builder.Services.AddScoped<BuscarClaseServicio>();
此方式违背依赖注入的设计原则,会降低代码的可维护性,不建议长期使用。
修改完成后重新运行项目,即可正常通过注入的服务调用方法获取班级列表。
内容的提问来源于stack exchange,提问作者NioDeTark
相关产品推荐
相关产品推荐

