Blazor 客户端 [inject] 属性总是 return null

Blazor client side [inject] properties always return null

在 razor 页面中,我使用 @inject Blazored.LocalStorage.ISyncLocalStorageService localStorage 并且工作正常。但是来自非剃须刀连接 类(服务和助手)使用

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

始终returns 为空。是否需要一些额外的东西才能让 DI 在非 Razor 文件中工作?或者我是否必须通过构造函数将所有 DI 从 UI 层一直向下推?

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

只有构造函数注入适用于非 razor 对象。因此,您不能定义一个用 Inject 属性注释的 属性 并期望它用给定对象的实例填充。改用构造函数注入。

然而,对于 Razor 对象,您可以使用 @inject 指令将服务注入到 Razor 组件中,但您也可以使用 Inject 属性和 razor 组件中的属性 class 定义 (.razor.cs ) 和 @code 块 ( .razor ).

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