gpt4 book ai didi

c# - 在 Blazor 组件之外设置 EventCallback

转载 作者:行者123 更新时间:2023-12-03 09:33:52 29 4
gpt4 key购买 nike

我正在构建一个 Blazor ProgressBar 演示,并且我试图将一些代码从我的 Blazor 组件移到一个名为 ProgressManager 的 C# 类中。这样我就可以抽象代码并使 ProgressManager 成为 CascadingParameter到 ProgressBar 组件。
我知道如何设置 EventCallback像这样的组件的参数:

[Parameter]
public EventCallback<string> UpdateNotification { get; set; }
我不知道该怎么做是在 C# 类上设置这种相同类型的属性。
我的 Start 方法中有此代码:
public void ShowProgressSimulation()
{
// Create a ProgressManager
this.ProgressManager = new ProgressManager();
this.ProgressManager.UpdateNotification = Refresh;
this.ProgressManager.Start();

// Refresh the UI
StateHasChanged();
}
不起作用的部分是: this.ProgressManager.UpdateNotification = Refresh;错误是:

Cannot convert method group 'Refresh' to non-delegate type 'EventCallback'. Did you intend to invoke the method?


我也试过: this.ProgressManager.UpdateNotification += Refresh;这导致“EventCallback 不能应用于方法组”(意译)。

最佳答案

原来你可以从 C# 代码中分配一个事件回调,如下所示:

this.ProgressManager.UpdateNotification = new EventCallback(this, (Action)Refresh);

void Refresh() {}
它也适用于异步方法,例如:
this.ProgressManager.UpdateNotification = new EventCallback(this, (Func<ValueTask>)RefreshAsync);

ValueTask RefreshAsync() {}
更新
您也可以使用 EventCallbackFactory更方便地创建事件回调对象,例如:
new EventCallbackFactory().Create(this, Refresh)

关于c# - 在 Blazor 组件之外设置 EventCallback<string>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59816177/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com