检查是否已将EventCallback设置为Blazor

时间:2020-01-24 20:20:28

标签: blazor

是否可以检查EventCallback是否已设置为某些值。我将我的内容设置在组件外部,并且只想在设置了EventCallback的情况下在组件内部显示某些内容。

2 个答案:

答案 0 :(得分:7)

您可以在EventCallback参数上使用HasDelegate属性。这将返回一个布尔值,指示事件调度程序是否为非null

[Parameter]
public EventCallback DoSomething { get; set; }

private bool IsEventSet => DoSomething.HasDelegate;

答案 1 :(得分:0)

EventCallBack是一个结构。我期待着同样的事情,例如一种检查EventCallBack是否不为null的方法,但是由于它是一个结构,因此EventCallback.InvokeAsync()如果未设置就不会引发错误,这使我的C#编译器在我的脑海中def然。

在这里的示例中,如果错误处理程序未设置为某种值,则因为Struct不能为null,所以永远不会引发异常。有点不符合我的逻辑,但是它没有什么可调用的,因此不会引发错误。

[Parameter] public EventCallback<string> OnReset { get; set; }

private void ResetFinished()
{  
    try
    {
        // Notify the client the Reset button was clicked.
        OnReset.InvokeAsync("Reset");
    }
    catch (Exception error)
    {
        // for debugging only
        string err = error.ToString();
    }                
}