如何在仍然能够覆盖默认方法的情况下拥有该方法

本文关键字:方法 默认 情况下 拥有 覆盖 | 更新日期: 2023-09-27 18:20:23

这是一个C#项目。

我有几个从基类继承的类。大多数子类具有相同的行为,而有些子类的行为不同。

我使用的是new关键字。

public class Parent
{
    public DataTable FetchScore()
    {
        // blahblah
    }
}
public class ChildNormal : Parent
{
}
public class ChildOdd : Parent
{
    public new DataTable FetchScore()
    {
        DataTable dt = base.FetchScore();
        // blahblah
    }
}

但该版本表示,使用new不是一个好的做法。

我也不能使用virtualoverride,因为我想要一个默认值。我不想多次复制相同的覆盖实现。

我如何在C#中做到这一点?

如何在仍然能够覆盖默认方法的情况下拥有该方法

您需要在需要与原始行为不同的行为时声明基virtual(这意味着它可以在必要时被重写)和override。未重写的派生类的行为将与基类类似。

public class Parent()
{
    public virtual DataTable FetchScore()
    {
        // blahblah
    }
}
public class ChildNormal() : Parent
{
}
public class ChildOdd() : Parent
{
    public override DataTable FetchScore()
    {
        DataTable dt = base.FetchScore();
        // blahblah
    }
}