混合Blazor组件,DI和c# 8可空



我在一个项目中使用。net 5为Blazor应用程序启用了nullable。它使用Code Behind来创建Blazor组件。我想使用一个构造函数,这样我就可以避免将每个非DI属性标记为可空的,以简化在我的blazor代码中访问它们。但是,如果我创建一个构造函数,比如public PageNumberOne(ILogger<PrimaryItem> logger) {}

我得到错误MissingMethodException:没有为类型定义的无参数构造函数

如果我在DI项上使用inject属性,那么我有警告-非空属性_logger在激发构造函数时必须包含一个非空值

那么,我如何将DI与nullable混合,而不只是将每个属性标记为可空?

我也可以在"code"块,但然后我不能访问我的DI项进行初始化,因为它们直到OnInitialized才可用。所以我还是要把它们标记为Nullable

Microsoft advice from Request a service in a component at ASP。. NET Core Blazor依赖注入文档:

由于注入的服务是可用的,所以不要将注入的服务标记为可空的。相反,使用允许为空的操作符(default!)赋值一个默认文字。

[Inject]
private IExampleService ExampleService { get; set; } = default!;

相关内容

  • 没有找到相关文章

最新更新