Ci sono state occasioni in cui vorrei sovrascrivere un metodo in una classe con un metodo di estensione. C'è un modo per farlo in C#?C'è un modo in C# per sovrascrivere un metodo di classe con un metodo di estensione?
Ad esempio:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
un caso in cui ho voluto fare questo è quello di essere in grado di memorizzare un hash di una stringa in un database e che hanno lo stesso valore essere usato da tutte le classi che usa l'hash della classe string (es. Dizionario, ecc.) Poiché l'algoritmo di hashing .Net integrato non è garantito per essere compatibile da una versione del Framework al successivo, voglio sostituirlo con il mio.
Ci sono altri casi in cui mi sono imbattuto dove vorrei sovrascrivere un metodo di classe con un metodo di estensione e quindi non è solo specifico per la classe di stringa o il metodo GetHashCode.
So che potrei farlo con la sottoclasse di una classe esistente, ma sarebbe utile poterlo fare con un'estensione in molti casi.
Poiché un dizionario è una struttura di dati in memoria , che differenza fa se l'algoritmo di hashing cambia dalla versione del framework a quella successiva? Se la versione del framework cambia, ovviamente l'applicazione è stata riavviata e il dizionario è stato ricostruito. –