0

使用默认模板我修改了 Counter :

@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>它,它会起作用。

这是为什么?

4

1 回答 1

0

您使用 InvokeAsync 进行了调用,因此它需要一个返回任务不无效的方法。在您使用 Counter 组件的地方使用它,我认为这将解决您的问题。

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

@code {

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

    }
}
于 2019-10-26T11:56:26.997 回答