Проверьте, установлен ли EventCallback Blazor - PullRequest
5 голосов
/ 24 января 2020

Есть ли способ проверить, было ли EventCallback установлено на что-то. Я устанавливаю мой вне компонента и хочу показывать некоторые вещи внутри компонента, только если был установлен EventCallback.

Ответы [ 2 ]

4 голосов
/ 24 января 2020

Вы можете использовать свойство HasDelegate для параметра EventCallback. Это вернет логическое значение, указывающее, является ли диспетчер событий ненулевым

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

private bool IsEventSet => DoSomething.HasDelegate;
0 голосов
/ 26 января 2020

EventCallBack - это структура. Я ожидал того же самого, например, способа проверить, не является ли EventCallBack ненулевым, но так как это структура, EventCallback.InvokeAsyn c () не вызовет ошибку, если не установлен, что игнорирует мой C# компилятор в моем мозгу.

В этом примере здесь, если обработчик ошибок не установлен на что-то, исключение никогда не генерируется, так как Struct не может быть нулевым. Мне это не поддается логи c, но вызывать нечего, поэтому ошибка не выдается.

[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();
    }                
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...