web-dev-qa-db-fra.com

Méthodes d'extension statique

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.

154
Midhat

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 ...

144
BFree

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();
75
bsneeze

On dirait que tu ne peux pas. Voir ici pour une discussion à ce sujet

Cependant, j'aimerais beaucoup avoir tort.

3
Ray