Oczywiście można użyć Func<T1, T2, TResult>
Delegat:
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
}
Ten delegat definiuje funkcję, która przyjmuje dwa parametry ciągów i zwraca ciąg znaków. Ma licznych kuzynów do definiowania funkcji, które przyjmują różną liczbę parametrów. Zadzwonić myMethod
z inną metodą, można po prostu przechodzą w nazwie metody, na przykład:
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);
Oczywiście, jeśli parametr i zwracają typy f2
nie są dokładnie takie same, może być konieczne odpowiednio dostosuj podpis metody.
[C# Delegaci, metody anonimowe i wyrażeń lambdy] (http://www.codeproject.com/Articles/47887/C-Delegates-Aonymous-Methods-and-Lambda-Expressio) – I4V