J'ai besoin d'un moyen de définir une méthode en c # comme ceci:
public String myMethod(Function f1,Function f2)
{
//code
}
Soit f1:
public String f1(String s1, String s2)
{
//code
}
est-ce qu'il y a un moyen de faire ça?
Bien sûr, vous pouvez utiliser le Func<T1, T2, TResult>
délégué:
public String myMethod(
Func<string, string, string> f1,
Func<string, string, string> f2)
{
//code
}
Ce délégué définit une fonction qui prend deux paramètres de chaîne et renvoie une chaîne. Il a de nombreux cousins pour définir des fonctions qui prennent différents nombres de paramètres. Pour appeler myMethod
avec une autre méthode, vous pouvez simplement passer le nom de la méthode, par exemple:
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);
Bien sûr, si le paramètre et les types de retour de f2
ne sont pas exactement les mêmes, vous devrez peut-être ajuster la signature de la méthode en conséquence.