【发布时间】:2016-04-20 09:00:46
【问题描述】:
在 C# 中是否可以有一个方法接受具有零个、1 个或多个参数的委托?
在下面的方法中,当我在对话框上单击“是”时,我希望能够做一些事情。我为此使用了一个委托,但目前它只接受没有参数的方法。
可能有多种方法可以做到这一点,比如传递一个包含参数的泛型类,但最好的方法是什么? C# 是否提供了一些开箱即用的东西以优雅的方式做到这一点?
public static bool ShowCustomDialog(string message,
string caption,
MessageBoxButtons buttons,
XafApplication application,
Action onYes = null)
{
Messaging messageBox = new Messaging(application);
var dialogResult = messageBox.GetUserChoice(message, caption, buttons);
switch (dialogResult)
{
case DialogResult.Yes:
onYes?.Invoke();
break;
}
return false;
}
【问题讨论】:
-
不,不可能创建一个接受任意数量参数的函数的方法,例如
Action<T>、ActionT1, T2, ...>。
标签: c# methods lambda delegates