有时候我想用扩展方法覆盖类中的方法。在C#中有什么方法可以做到这一点?
例如:
public static class StringExtension { public static int GetHashCode(this string inStr) { return MyHash(inStr); } }
我想要这样做的一种情况是能够将字符串的哈希存储到数据库中,并且使用该字符串类的哈希的所有类(例如Dictionary等)都使用相同的值。内置的.Net哈希算法不能保证从一个版本的Framework到下一个版本都兼容,我想用自己的版本替换它。
在其他情况下,我也想用扩展方法覆盖类方法,因此它不仅特定于字符串类或GetHashCode方法。
我知道我可以通过将现有类子类化来做到这一点,但是在很多情况下能够通过扩展来做到这一点很方便。
没有; 扩展方法永远不会比具有适当签名的实例方法优先,并且永远不会参与多态性(GetHashCode是一种virtual方法)。
GetHashCode
virtual