Były sytuacje, w których chciałbym zastąpić metodę w klasie metodą rozszerzającą. Czy jest jakiś sposób to zrobić w C#?Czy jest jakiś sposób w C#, aby zastąpić metodę klasy z metodą rozszerzenia?
Na przykład:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
Przypadek, w którym chciałem to zrobić, aby móc przechowywać hash ciąg do bazy danych i mają tę samą wartość być wykorzystywane przez wszystkich klas, które użyj skrótu klasy łańcuchowej (np. Słownik, itp.) Ponieważ wbudowany algorytm mieszania .Net nie może być kompatybilny z jedną wersją struktury do następnej, chcę ją zastąpić własną.
Jest jeszcze inny przypadek, w którym wpadłem tam, gdzie chciałbym zastąpić metodę klasy również metodą rozszerzającą, więc nie jest ona specyficzna tylko dla klasy ciągów lub metody GetHashCode.
Wiem, że mogłem to zrobić z podklasowaniem istniejącej klasy, ale byłoby to przydatne, aby móc to zrobić z rozszerzeniem w wielu przypadkach.
Ponieważ słownik jest strukturą danych w pamięci , jaka to różnica, czy algorytm mieszający zmienia się z wersji frameworka na następną? Jeśli zmienia się wersja ramowa, to oczywiście aplikacja została zrestartowana, a słownik został ponownie zbudowany. –