如何在 Blazor 组件中强制执行参数?
How do I enforce a parameter in a blazor component?
<MyComponent MyParameter="@MyParameter"></MyComponent>
我希望 MyComponent 标签在没有值提供给 时抛出错误MyParameter 参数.
其他两个答案都有效,但我会这样做:
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
if (MyParameter == null)
throw new InvalidOperationException($"{nameof(MyComponent)} requires a {nameof(MyParameter)} parameter.");
return base.SetParametersAsync(ParameterView.Empty);
}
为什么? SetParametersAsync
是组件上Renderer调用的入口方法:没有组件代码运行。如果,假设您在 OnParametersSet{Async}
中进行了检查,您可能已经尝试在 OnInitialized{Async}
中使用它 - 您还没有告诉我们为什么必须设置它!
<MyComponent MyParameter="@MyParameter"></MyComponent>
我希望 MyComponent 标签在没有值提供给 时抛出错误MyParameter 参数.
其他两个答案都有效,但我会这样做:
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
if (MyParameter == null)
throw new InvalidOperationException($"{nameof(MyComponent)} requires a {nameof(MyParameter)} parameter.");
return base.SetParametersAsync(ParameterView.Empty);
}
为什么? SetParametersAsync
是组件上Renderer调用的入口方法:没有组件代码运行。如果,假设您在 OnParametersSet{Async}
中进行了检查,您可能已经尝试在 OnInitialized{Async}
中使用它 - 您还没有告诉我们为什么必须设置它!