我在C#中有一个名为Button
的类,我希望Button
具有可以通过其构造函数传递的功能,每当Button
被按下Action
时执行。
Button(Rect rect, string text, Action Func);
我使用过Action
并且它完美无缺,直到我发现我无法传递带有参数的void Action
。
例如:
void DoSomething(string str);
我如何能够通过任何参数传递任何void Action
?
答案 0 :(得分:1)
按钮不必关心参数,但仍需要传递没有参数的委托并返回void。这很容易做到:
new Button(rect, text, () => YourMethod(whateverArgument))
根据您尝试执行的操作,whateverArgument
可以是本地,常量或字段。只要想想它何时应该读取传递给内部方法的值。
答案 1 :(得分:0)
当然你可以传递参数,只需使用以下内容:
Button b = new Button(.., .., () => DoSomething("YourString");
答案 2 :(得分:0)
我建议你使用simplefied command pattern: 创建基类或接口Command
interface ICommand
{
void Execute();
}
//Create secific command and pass parameters in constructor:
class Command : ICommand
{
public Command(string str)
{
//do smth
}
void Execute()
{
//do smth
}
}
Button(Rect rect, string text, ICommand cmd)
{
cmd.Execute();
}