Il y a eu des occasions où j'ai envie de remplacer une méthode dans une classe avec une méthode d'extension. Est-il possible de le faire en C#?
Par exemple:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
Un cas où j'ai voulu faire, c'est d'être en mesure de stocker un hash d'une chaîne de caractères dans une base de données et ont la même valeur soit utilisée par toutes les classes qui utilisent la classe string de hachage (c'est à dire un Dictionnaire, etc.) Depuis la construite en .Net algorithme de hachage n'est pas garanti pour être compatible d'une version du Cadre de travail pour la prochaine, je veux le remplacer par le mien.
Il y a d'autres cas que j'ai pu croiser où je veux remplacer une méthode de classe avec une méthode d'extension ainsi il n'est donc pas spécifique à la classe string ou la méthode GetHashCode.
Je sais que je pourrais le faire avec un sous-classement off une classe existante, mais il serait pratique de pouvoir le faire avec une extension dans beaucoup de cas.