C# ASP.NET Core blazor依赖项注入错误:System.NullReferenceException?

C# ASP.NET Core blazor依赖项注入错误:System.NullReferenceException?,c#,.net,asp.net-core,orm,blazor,C#,.net,Asp.net Core,Orm,Blazor,使用基于blazor(依赖项注入业务服务)的SqlSugar ORM,调用时会报告一个错误,该错误为空 SqlSugarService: public static class SqlSugarService { private static readonly ILog log = LogManager.GetLogger(typeof(SqlSugarService)); public static void AddSqlSugarSevice(this IServiceCol

使用基于blazor(依赖项注入业务服务)的SqlSugar ORM,调用时会报告一个错误,该错误为空 SqlSugarService:

public static class SqlSugarService
{
    private static readonly ILog log = LogManager.GetLogger(typeof(SqlSugarService));
    public static void AddSqlSugarSevice(this IServiceCollection services)
    {
        if (services == null) throw new ArgumentNullException(nameof(services));
    
        services.AddScoped<ISqlSugarClient>(o =>
        {
            var listConfig = new List<ConnectionConfig>();
            listConfig.Add(new ConnectionConfig
            {
                DbType = DbType.SqlServer,
                ConnectionString = "Server=.\\SQLEXPRESS;DataBase=Test;Uid=sa;Pwd=123456",
                IsAutoCloseConnection = true,
                InitKeyType = InitKeyType.Attribute
            });
            var dbContext = new SqlSugarClient(listConfig);
            
            return dbContext;
        });
    }
}
接口实现:

public class ReportRepository : IReportRepository
{
    private ISqlSugarClient _dbBase;
    public ReportRepository(ISqlSugarClient sqlSugar)
    {
        _dbBase = sqlSugar;
    }

    public DataTable GetTest(string sql)
    {
        return _dbBase.Ado.GetDataTable(sql);
    }
}
注射:

services.AddSqlSugarSevice();
services.TryAddTransient<IReportRepository, ReportRepository>(); 
错误:

System.NullReferenceException,HResult=0x80004003,Message=Object reference未设置为对象的实例,Source=MyReport

\u dbBase=sqlSugar作为SqlSugarClient
为什么要像那样做
?修改代码后,会报告相同的错误:“private isqlsugageclient”dbBase;public ReportRepository(isqlsugageclient sqlSugar){{u dbBase=sqlSugar;}``从逻辑上考虑—必须在触发
报告
构造函数后注入依赖项。但是您正在构造函数中使用依赖项。从逻辑上讲,这是不可能的。在构造函数完成之前,DI容器是如何将其注入其中的?如果您真的想在构造函数中使用它,您需要使用构造函数注入,而不是
[Inject]
。非常感谢。我刚测试过。注入[Inject]后,按钮事件成功。然而,当使用构造函数注入时,出现了一个新的错误,我不知道为什么。我在问题中添加了新错误的屏幕截图,这是一个新问题。你能把它单独写在这里吗?
services.AddSqlSugarSevice();
services.TryAddTransient<IReportRepository, ReportRepository>(); 
public partial class Report
{
    [Inject]
    public IReportRepository ReportService { get; set; }

    public Report()
    {
        ReportService.GetTest("select * from test");
    }
}