在剃须刀页面中,我使用的是@inject Blazored.LocalStorage.ISyncLocalStorageService localStorage
,它工作正常。但是从非剃须刀相连的类(服务和助手)中使用
[Inject]
protected Blazored.LocalStorage.ISyncLocalStorageService localStorage { get; set; }
始终返回null。要使DI在非剃须刀文件中工作还需要其他一些东西吗?还是我必须将所有DI都通过构造函数从UI层向下推送?
答案 0 :(得分:3)
以下内容仅基于我自己的经验,因此可能会被证明是错误的...
仅构造函数注入在非剃刀对象中有效。因此,您无法定义以Inject属性为注释的属性,并不能期望它以给定对象的实例填充。请改用构造函数注入。
但是,对于Razor对象,可以使用@inject指令将服务注入到Razor组件中,但是还可以将Inject属性与剃刀组件类定义(.razor.cs)和@code块中的属性一起使用( .razor)。
希望这对您有帮助...