我定义了一个名为snackbarOptions的Action 委托,因此我可以在添加snackbar 时使用它,而不是在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, y, z) => Snackbar.Add("Message", MudBlazor.Severity.Warning, snackbarOptions))
这不会:
public bool CheckForDuplicates(Action<SnackbarOptions> options)
{
...
}
呼唤——
duplicatesValidation.CheckForDuplicates(snackbarOptions)
编辑 2:
未处理的异常呈现组件:对象引用未设置为对象的实例。... EditDependenciesDialog.razor.cs:该行的第 188 行代码:duplicatesValidation.CheckForDuplicates(duplicatesSnackbarOptions)
DuplicatesValidation.cs:该行的第 35 行代码:Snackbar.Add("x", Severity.Warning, options);