Duplicate possible:
Puis-je ajouter des méthodes d'extension à une classe statique existante?
Est-il possible d'ajouter une méthode d'extension statique à une classe?.
plus précisément, je veux surcharger Boolean.Parse pour permettre un argument int.
En bref, non, vous ne pouvez pas.
Réponse longue, les méthodes d'extension ne sont que du sucre syntaxique. C'EST À DIRE:
Si vous avez une méthode d'extension sur chaîne, disons:
public static string SomeStringExtension(this string s)
{
//whatever..
}
Quand vous l'appelez alors:
myString.SomeStringExtension();
Le compilateur le transforme simplement en:
ExtensionClass.SomeStringExtension(myString);
Comme vous pouvez le constater, il n’ya aucun moyen de le faire pour les méthodes statiques.
Et une autre chose me vient à l’esprit: quel serait vraiment le point de pouvoir ajouter des méthodes statiques sur des classes existantes? Vous pouvez simplement avoir votre propre classe d'assistance qui fait la même chose, alors quel est l'avantage de pouvoir faire:
Bool.Parse(..)
vs.
Helper.ParseBool(..);
N'apporte pas grand chose à la table ...
plus précisément, je veux surcharger Boolean.Parse pour permettre un argument int.
Serait une extension pour int travail?
public static bool ToBoolean(this int source){
//do it
//return it
}
Ensuite, vous pouvez l'appeler comme ceci:
int x = 1;
bool y=x.ToBoolean();
On dirait que tu ne peux pas. Voir ici pour une discussion à ce sujet
Cependant, j'aimerais beaucoup avoir tort.