据我了解,隐藏服务空警告的推荐方法如下:
[Inject] private IExampleService ExampleService { get; set; } = default!;
我想知道这是否同样适用于在代码后面使用
@ref
表示法给出引用的组件,或者是否应该以不同的方式处理?
例如使用 DevExpress 组件:
<DxButton Text="Button" @ref=ExampleButton />
@code {
private DxButton ExampleButton { get; set; } = default!;
}
如果我正确理解这一点,渲染器会在渲染后填充
ExampleButton
属性,因此如果在 OnInitialized()
方法中使用该属性,则可能会出现空异常,因此我不确定 !default
是否是正确的方法。
我希望 DevExpress 本身能有一些关于此的文档,但是我找不到任何东西。
= default!;
仍然分配空值但忽略空警告。如果你想使用它的属性,你仍然可能会遇到异常。我建议使用
private DxButton ExampleButton { get; set; } = new();
然后每个属性都会被初始化。
例如,以下代码将抛出异常。
<DxButton Text="Button" @ref=mybutton></DxButton>
@code{
public DxButton mybutton = default!;
protected override async Task OnInitializedAsync()
{
//will throw null exception.
var test = mybutton.SizeMode;
}
}
但是当你使用
=new();
时,就不会有任何问题了。