我需要一种在c#中定义方法的方法,如下所示:
public String myMethod(Function f1,Function f2)
{
//code
}
让f1为:
public String f1(String s1, String s2)
{
//code
}
有没有办法做到这一点?
答案 0 :(得分:31)
当然可以使用Func<T1, T2, TResult>
代表:
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
}
此委托定义一个函数,该函数接受两个字符串参数并返回一个字符串。它有许多表兄弟来定义具有不同数量参数的函数。要使用其他方法调用myMethod
,您只需传入方法的名称,例如:
public String doSomething(String s1, String s2) { ... }
public String doSomethingElse(String s1, String s2) { ... }
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
string result1 = f1("foo", "bar");
string result2 = f2("bar", "baz");
//code
}
...
myMethod(doSomething, doSomethingElse);
当然,如果f2
的参数和返回类型不完全相同,您可能需要相应地调整方法签名。