Vous devez utiliser un délégué. Dans ce cas, toutes vos méthodes prennent un string
paramètre et retourne un int
- ce qui est plus simplement représentée par l' Func<string, int>
déléguéà 1. Ainsi, votre code peut devenir correcte avec d'aussi simple qu'un changement comme ceci:
public bool RunTheMethod(Func<string, int> myMethodName)
{
// ... do stuff
int i = myMethodName("My String");
// ... do more stuff
return true;
}
Les délégués ont beaucoup plus de pouvoir que cela, certes. Par exemple, avec le C#, vous pouvez créer un délégué d'une expression lambda, de sorte que vous pourriez appeler votre méthode de cette façon:
RunTheMethod(x => x.Length);
Qui va créer une fonction anonyme comme ceci:
private static int <>_HiddenMethod_<>(string x)
{
return x.Length;
}
et puis passer que délégué à l' RunTheMethod
méthode.
Vous pouvez utiliser les délégués pour les abonnements d'événements, d'exécution asynchrone, rappels - toutes sortes de choses. Il vaut la peine de le lire, surtout si vous souhaitez utiliser LINQ. J'ai un article qui est surtout sur les différences entre les délégués et les événements, mais vous trouverez peut-être utile de toute façon.
1 C'est juste basé sur le générique de l' Func<T, TResult>
type de délégué dans le cadre, vous pouvez facilement déclarer votre propre:
public delegate int MyDelegateType(string value)
et puis faire le paramètre de type MyDelegateType
à la place.