传递具有不同参数的动作

时间:2015-08-07 10:51:45

标签: c# action

我在C#中有一个名为Button的类,我希望Button具有可以通过其构造函数传递的功能,每当Button被按下Action时执行。

Button(Rect rect, string text, Action Func);

我使用过Action并且它完美无缺,直到我发现我无法传递带有参数的void Action

例如:

void DoSomething(string str);

我如何能够通过任何参数传递任何void Action

3 个答案:

答案 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();
}