.NET 8.0 InvalidOperationException:依赖注入IBookingData服务失败求助
解决.NET 8 Blazor中InvalidOperationException:无法解析IBookingData泛型服务的问题
排查步骤及解决方案:
检查命名空间冲突
错误提示中提到的BerHUB_reverse.Components.Pages.Booking和你注册的BerHUB_reverse.Models.Booking是两个不同的类型。确认CreateBookingPage.razor中注入的Booking是否误引用了页面命名空间下的类:- 临时修改注入代码,使用全命名空间验证:
@inject IBookingData<BerHUB_reverse.Models.Booking> bookingData,如果能正常运行,说明存在命名空间冲突。 - 检查页面顶部的
@using指令,是否误引入了BerHUB_reverse.Components.Pages,导致Booking被解析为页面类而非模型类。
- 临时修改注入代码,使用全命名空间验证:
验证服务注册的准确性
确保Program.cs中的注册代码没有拼写错误,且泛型参数完全匹配:builder.Services.AddScoped<IBookingData<BerHUB_reverse.Models.Booking>, BookingData>();同时确认
BookingData类确实实现了IBookingData<BerHUB_reverse.Models.Booking>,而非其他泛型参数的接口版本。清理项目缓存
VS的编译缓存可能导致类型解析异常,执行以下操作:- 右键项目 → 清理
- 手动删除项目根目录下的
bin和obj文件夹 - 重新生成项目
检查泛型接口及实现的定义
确保IBookingData<T>接口的泛型约束正确,且实现类的泛型参数完全匹配:// 接口定义 public interface IBookingData<T> where T : class { // 接口方法 } // 实现类 public class BookingData : IBookingData<BerHUB_reverse.Models.Booking> { // 实现代码 }
内容的提问来源于stack exchange,提问作者jamie.tsc
相关产品推荐
相关产品推荐

