Ha habido ocasiones en las que me gustaría sobrescribir un método en una clase con un método de extensión. ¿Hay alguna manera de hacer eso en C#?¿Hay alguna forma en C# para anular un método de clase con un método de extensión?
Por ejemplo:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
Un caso en el que he querido hacer esto es ser capaz de almacenar un hash de una cadena en una base de datos y tienen el mismo valor de ser utilizado por todas las clases que use el hash de la clase de cadena (es decir, el diccionario, etc.) Dado que el algoritmo de hash .Net incorporado no garantiza que sea compatible desde una versión del Framework al siguiente, quiero reemplazarlo por el mío.
Hay otro caso en el que me he encontrado donde quiero anular un método de clase con un método de extensión, así que no es solo específico para la clase de cadena o el método GetHashCode.
Sé que podría hacer esto con una subclasificación de una clase existente, pero sería útil poder hacerlo con una extensión en muchos casos.
Como un diccionario es una estructura de datos en memoria , ¿qué diferencia hace si el algoritmo hash cambia de una versión del framework a la siguiente? Si la versión del marco cambia, obviamente la aplicación se ha reiniciado y el diccionario ha sido reconstruido. –