强制子类通过父级覆盖祖先的功能

时间:2013-11-05 14:21:34

标签: c# inheritance

我正在编写一种算法,要求用户创建自己的类,该类继承自我定义的类。但是,该算法要求用户覆盖C#标准库中的Equals和GetHashCode函数。

我可以强制从我的类继承的类来实现GetHashCode和Equals函数吗?

public abstract int GetHashCode();

在我的基类中编写它不是一个选项,因为我的基类从它的父级继承了GetHashCode,它已经实现了。

3 个答案:

答案 0 :(得分:12)

这就是你要找的东西。由于你的课程是抽象的,你几乎可以毫无问题地做到这一点。

public abstract override int GetHashCode();

尽管它派生自其他一些类,但这使得你的子类必须覆盖这个方法。

答案 1 :(得分:3)

您可以创建2个新的方法,这些方法将是抽象的,并将从您的班级GetHashCodeEquals调用。

示例:

public abstract ParentClass {
    public abstract int MyGetHashCode();

    public override int GetHashCode(){
        return MyGetHashCode();
    }

    // same thing for Equals
}

答案 2 :(得分:0)

在你班上:

public override bool Equals(object obj)
{
    throw new System.NotImplementedException();
}

public override int GetHashCode()
{
    throw new System.NotImplementedException();
}

这意味着如果它们不覆盖它,则函数将因异常而失败。这迫使他们覆盖它以使其发挥作用。