使用默认模板,我修改了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>
,就可以了。
那是为什么?
答案 0 :(得分:0)
您使用InvokeAsync进行了调用,因此期望使用的方法将返回任务不为空。在您使用Counter组件的地方使用它,我认为这可以解决您的问题。
<Counter UpdateCallback="async (d)=> await MyCallback(d,42)"></Counter>
@code {
public async Task MyCallback(dynamic val, int number)
{
}
}