我有一个基类
local.set('user.session.timeout', false);
local.set('user.name', {first:'john', last:'doe', mi:'c'});
local.set('user.PIN', 8675309);
,我想确保派生类实现自己的自定义public abstract class MyBaseClass()
{
// ...
}
方法。是
GetHashCode
做到这一点的方式,还是整个创意代码都闻到了?
答案 0 :(得分:4)
除了类声明中的语法错误之外,这确实是我建议做的事情。
我可能同时使Equals
抽象-在没有另一个的情况下覆盖其中一个是很奇怪的:
public abstract class MyBaseClass
{
public abstract override bool Equals(object obj);
public abstract override int GetHashCode();
}
您可以使用另一个(现已删除)答案中建议的模板模式方法,但是如果您想在基类中应用一些逻辑,例如将哈希码提供的哈希码与其他内容结合起来。
如果您只想强制重新实现,那么用抽象方法覆盖object
方法似乎很合适。
答案 1 :(得分:0)
也许是这样?
public abstract class MyClass
{
public abstract int GetHashCodeInternal();
public override int GetHashCode()
{
return GetHashCodeInternal();
}
}