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

Tha*_*Guy 2 dependency-injection blazor blazor-client-side

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

[Inject]
protected Blazored.LocalStorage.ISyncLocalStorageService localStorage { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

Isa*_*aac 6

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

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

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

希望这可以帮助...