Blazor客户端[inject]属性始终返回null

时间:2020-02-09 04:20:44

标签: dependency-injection blazor blazor-client-side

在剃须刀页面中,我使用的是@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage,它工作正常。但是从非剃须刀相连的类(服务和助手)中使用

[Inject]
protected Blazored.LocalStorage.ISyncLocalStorageService localStorage { get; set; }

始终返回null。要使DI在非剃须刀文件中工作还需要其他一些东西吗?还是我必须将所有DI都通过构造函数从UI层向下推送?

1 个答案:

答案 0 :(得分:3)

以下内容仅基于我自己的经验,因此可能会被证明是错误的...

仅构造函数注入在非剃刀对象中有效。因此,您无法定义以Inject属性为注释的属性,并不能期望它以给定对象的实例填充。请改用构造函数注入。

但是,对于Razor对象,可以使用@inject指令将服务注入到Razor组件中,但是还可以将Inject属性与剃刀组件类定义(.razor.cs)和@code块中的属性一起使用( .razor)。

希望这对您有帮助...