我有几种方法都具有相同的签名(参数和返回值),但是不同的名称和方法的内部原理不同。我想将要运行的方法的名称传递给另一个方法,该方法将调用传入的方法。
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代码,因为我需要定义参数。
您可以将.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); } }