クラス内のメソッドを拡張メソッドでオーバーライドしたい場合がありました。C#でそれを行う方法はありますか?
例えば:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
私がこれをやりたかったのは、文字列のハッシュをデータベースに保存し、文字列クラスのハッシュを使用するすべてのクラス (つまり、辞書など) で同じ値を使用できるようにすることです。組み込みの .NET ハッシュ アルゴリズムは、フレームワークのあるバージョンから次のバージョンへの互換性が保証されていないため、独自のものに置き換えたいと考えています。
クラスメソッドを拡張メソッドでオーバーライドしたい場合が他にもあるので、文字列クラスまたはGetHashCode
メソッドに固有のものではありません。
既存のクラスをサブクラス化することでこれを実行できることはわかっていますが、多くの場合、拡張機能を使用して実行できると便利です。