Nic*_*tte 15 c# dependency-injection blazor .net-5
我在启用可为 null 的项目中使用 .net 5 作为 Blazor 应用程序。它使用代码隐藏来创建 Blazor 组件。我想使用构造函数,这样我就可以避免将每个非 DI 属性标记为可为空,以简化在 blazor 代码中对它们的访问。但是,如果我创建一个像这样的构造函数
public PageNumberOne(ILogger<PrimaryItem> logger) {}
我收到错误MissingMethodException: 没有为类型定义无参数构造函数
如果我在 DI 项上使用注入属性,则会收到警告 -当激发构造函数时,不可为空的属性 _logger 必须包含非空值
那么如何将 DI 与可为 null 混合,而不只是将每个属性标记为可为 null?
我还可以在“代码”块的主体中创建它们,但随后我无法访问我的 DI 项进行初始化,因为它们在 OnInitialized 之前不可用。所以我必须再次将它们标记为可为空。
dan*_*era 22
来自ASP.NET Core Blazor 依赖注入文档中的组件中请求服务的 Microsoft 建议:
由于注入的服务预计可用,因此不要将注入的服务标记为可为空。相反,使用 null-forgiving 运算符分配默认文字(默认!)。
[Inject]
private IExampleService ExampleService { get; set; } = default!;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3153 次 |
最近记录: |