【发布时间】:2010-10-28 07:47:37
【问题描述】:
在某些情况下,我想用扩展方法覆盖类中的方法。有没有办法在 C# 中做到这一点?
例如:
public static class StringExtension
{
public static int GetHashCode(this string inStr)
{
return MyHash(inStr);
}
}
我想要这样做的一个例子是能够将字符串的散列存储到数据库中,并让所有使用字符串类散列的类(即字典等)使用相同的值。 ) 由于不保证内置的 .NET 散列算法从一个版本的框架兼容到下一个版本,我想用我自己的替换它。
在其他情况下,我还想用扩展方法覆盖类方法,因此它不仅仅特定于字符串类或 GetHashCode 方法。
我知道我可以通过对现有类进行子类化来做到这一点,但在很多情况下能够通过扩展来做到这一点会很方便。
【问题讨论】:
-
由于字典是内存中的数据结构,散列算法是否从框架的一个版本更改为下一个版本有什么区别?如果框架版本发生变化,那么显然应用程序已经重新启动并且字典已经重新构建。
标签: c# extension-methods overriding