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);
}
一切正常。
此致
我的 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);
}
一切正常。
此致