关于c:如何在仍然能够重写默认方法的情况下拥有它?


How to have a default method while still be able to override it?

本问题已经有最佳答案,请猛点这里访问。

这是一个C项目。

我有几个从基类继承的类。大多数儿童班都有相同的行为,而其中一些行为不同。

我用的是new关键字。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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,其中您需要不同于原始行为。未重写的派生类的行为与基类的行为相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
    }
}