Certo si può usare il Func<T1, T2, TResult>
delegato:
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
}
Questo delegato definisce una funzione che prende due parametri di stringa e restituisce una stringa. Ha numerosi cugini per definire funzioni che prendono diversi numeri di parametri. Per chiamare myMethod
con un altro metodo, si può semplicemente passare il nome del metodo, ad esempio:
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);
Naturalmente, se il parametro e ritorno tipi di f2
non sono esattamente la stessa cosa, potrebbe essere necessario regolare di conseguenza la firma del metodo.
fonte
2013-08-11 21:27:48
[Delegati C#, metodi anonimi e espressioni Lambda] (http://www.codeproject.com/Articles/47887/C-Delegates-Anonymous-Methods-and-Lambda-Expressio) – I4V