当我尝试构建 Blazor 组件时,我可以为它定义参数,如下所示:
@code {
[Parameter]
public string MyString { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我是否可以要求此参数,以便在使用组件时,除非我提供指定的参数,否则项目将不会构建?这是我应该担心的事情吗?我想我可以处理组件初始化中的任何无效值,如果值不是这样提供的,可能会抛出异常:
protected override void OnInitialized()
{
base.OnInitialized();
if (string.IsNullOrWhiteSpace(MyString)) {
// throw an exception here...
}
}
Run Code Online (Sandbox Code Playgroud)
但这是处理这个问题的正确方法吗?
Ben*_*ica 13
.NET 6 及更新版本
这可以通过[EditorRequired]属性来完成。例子:
[Parameter, EditorRequired]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
如果未提供参数,这将向组件的消费者发出 IDE 警告,告知其参数丢失。
.NET 6 之前
目前,你必须完全按照你说的去做。
我喜欢[EditorRequired]与初始值结合使用null!。
[Parameter, EditorRequired]
public string MyString { get; set; } = null!;
Run Code Online (Sandbox Code Playgroud)
从技术上讲,该值在运行之前将为 null OnInitialized(),例如在构造函数中。尽管如此,它还是比在其他地方将其视为可能为 null 更方便。
小智 5
我们发现添加这个可以.csproj让我们将警告视为构建错误。
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!-- Violations of EditorRequired (RZ2012) are turned into true errors -->
<!-- https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/errors-warnings -->
<WarningsAsErrors>RZ2012</WarningsAsErrors>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1926 次 |
| 最近记录: |