一尘不染

使用C#将方法传递为参数

c#

我有几种方法都具有相同的签名(参数和返回值),但是不同的名称和方法的内部原理不同。我想将要运行的方法的名称传递给另一个方法,该方法将调用传入的方法。

public int Method1(string)
{
    ... do something
    return myInt;
}

public int Method2(string)
{
    ... do something different
    return myInt;
}

public bool RunTheMethod([Method Name passed in here] myMethodName)
{
    ... do stuff
    int i = myMethodName("My String");
    ... do more stuff
    return true;
}

public bool Test()
{
    return RunTheMethod(Method1);
}

这段代码不起作用,但这就是我想要做的。我不了解如何编写RunTheMethod代码,因为我需要定义参数。


阅读 372

收藏
2020-05-19

共1个答案

一尘不染

您可以将.net
3.5中的Func委托用作RunTheMethod方法中的参数。Func委托允许您指定一个方法,该方法采用许多特定类型的参数并返回特定类型的单个参数。这是一个应该起作用的示例:

public class Class1
{
    public int Method1(string input)
    {
        //... do something
        return 0;
    }

    public int Method2(string input)
    {
        //... do something different
        return 1;
    }

    public bool RunTheMethod(Func<string, int> myMethodName)
    {
        //... do stuff
        int i = myMethodName("My String");
        //... do more stuff
        return true;
    }

    public bool Test()
    {
        return RunTheMethod(Method1);
    }
}
2020-05-19