微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

传递 MudBlazor 小吃店选项 Action<SnackbarOptions> 作为函数参数

如何解决传递 MudBlazor 小吃店选项 Action<SnackbarOptions> 作为函数参数

我定义了一个名为 snackbarOptions 的 Action 委托,所以我可以在添加小吃店时使用它,而不是在 Snackbar.Add() 函数调用中声明它

Action<SnackbarOptions> snackbarOptions = (options) =>
{
            options.RequireInteraction = true;
            options.Action = "UKLONI DUPLIKAT";
            options.ActionColor = Color.Error;
            options.ActionVariant = Variant.Filled;
            options.Onclick = async snackbar =>
            {
                await DeleteDependency(readStep,readDependency);
            };
 };

现在每当我想添加小吃店时,我只需传递 options 参数。 add 函数本身就是一个函数的参数。

duplicatesValidation.CheckForDuplicates((x,y,z) => Snackbar.Add("Message",MudBlazor.Severity.Warning,snackbarOptions));

这很好,但是,当我尝试将 snackbarOptions 作为函数参数传递时,我可以在 CheckForDuplicates()调用 Snackbar.Add > 函数我得到一个对象引用错误

duplicatesValidation.CheckForDuplicates(snackbarOptions);

编辑: 所以总结一下: 这有效:

public void CheckForDuplicates(Action<string,Severity,Action<SnackbarOptions>> SnackBaradd) 
{
...
}

打电话 -

duplicatesValidation.CheckForDuplicates((x,snackbarOptions))

这不会:

public bool CheckForDuplicates(Action<SnackbarOptions> options)
{
...
}

打电话 -

duplicatesValidation.CheckForDuplicates(snackbarOptions)

编辑 2: 未处理的异常呈现组件:未将对象引用设置为对象的实例。 ... EditDependenciesDialog.razor.cs:line 188 该行代码duplicatesValidation.CheckForDuplicates(duplicatesSnackbarOptions) DuplicatesValidation.cs:line 35 该行代码Snackbar.Add("x",Severity.Warning,options); >

解决方法

考虑改用 local function 以避免丢失对象引用。

当您在运行时创建和存储委托时,您创建的委托可能在您调用它时未分配。

当使用本地方法时,它是预编译的,可以在其范围内的任何时间和任何地方引用。

Popen

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。