Blazor - 依赖注入不起作用

Blazor - Dependency Injection is not working

我的 Blazor 项目中有一个非常奇怪的问题。我正在使用依赖注入来使用我的 "CompanyService" 服务。这是我注册服务的方式

// Servies Injection
services.AddSingleton<UserService, UserService>();
services.AddSingleton<CompanyService, CompanyService>();

我正在我的剃须刀组件中注入该服务作为

@inject CompanyService CompanyService
@inject NavigationManager NavigationManager

我需要将这些服务传递给我的 ViewModel,我正在这样做(CompanesList 是我的 Razor 组件名称,所以它是构造函数)

public CompaniesList()
{
    Context = new CompaniesListVm(NavigationManager, CompanyService);
}

当我调试这段代码时,我得到的服务总是为空(NavigationManager、CompanyService)。这是我项目中的文件位置

谁能帮我解决这个问题?

P.S 我也在为我的 UI 使用 MatBlazor。

谢谢

问候 J

这是错误的:

services.AddSingleton<UserService, UserService>();
services.AddSingleton<CompanyService, CompanyService>();

应该是:

services.AddSingleton<IUserService, UserService>();
services.AddSingleton<ICompanyService, CompanyService>();

但是如果你没有定义接口,那么它应该是:

services.AddSingleton<UserService>();
services.AddSingleton<CompanyService>();

你在哪里做这个

 public CompaniesList()
{
   Context = new CompaniesListVm(NavigationManager, CompanyService);
 }

显示你所有的代码...

在任何情况下,在您的组件的视图部分(Razor 标记)使用@inject 指令,或定义一个带有 Inject 属性注释的 属性,例如:

[Inject] Public NavigationManager NavigationManager { get; set; }

希望这对您有所帮助...

问题是:

我在构造函数中初始化我的 VM,这是错误的

public CompaniesList()
{
    Context = new CompaniesListVm(NavigationManager, CompanyService);
}

改成后

protected override void OnInitialized()
{
     Context = new CompaniesListVm(NavigationManager, CompanyService);
}

一切正常。

此致