EventCallback <dynamic>создает исключение RuntimeBinderException - PullRequest
0 голосов
/ 26 октября 2019

Используя шаблон по умолчанию, я изменил счетчик:

@code {
    private int currentCount = 0;

    private async void IncrementCount()
    {
        currentCount++;

        await UpdateCallback.InvokeAsync(new { Counter = currentCount });
    }

    [Parameter] public EventCallback<dynamic> UpdateCallback { get; set; }
}

И я использую его так:

<Counter UpdateCallback="(d)=>MyCallback(d,42)"></Counter>

@code {

    public void MyCallback(dynamic val, int number)
    {

    }
}

Это приводит к

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Невозможно неявно преобразовать тип' void 'в' object ''

Если я передаю Tuple<dynamic>, это работает.

Почему это так?

1 Ответ

0 голосов
/ 26 октября 2019

Вы вызвали с помощью InvokeAsync, поэтому он ожидает метод, который вернет задачу, а не void. Используйте это там, где вы использовали свой компонент Counter, я думаю, что это решит вашу проблему.

<Counter UpdateCallback="async (d)=> await MyCallback(d,42)"></Counter>

@code {

    public async Task MyCallback(dynamic val, int number)
    {

    }
}
...