如何从其BaseClass函数中调用所有同名的DerivedClass对象函数?

时间:2018-10-03 03:01:09

标签: c#

我需要调用所有先前的函数,而不是被DerivedClass函数覆盖。

public class Program
{
    class BaseClass
    {
        public int BaseClassData = 123;
        public virtual void ResetAllData()
        {
            BaseClassData = 0;
        }

    }

    class DerivedClass : BaseClass
    {
        public int ChildClassData = 456;
        public override void ResetAllData()
        {
            ChildClassData = 0;

        }
    }



    public static void Main()
    {
        DerivedClass subject = new DerivedClass();
        DerivedClass subject2 = new DerivedClass();

        (subject).ResetAllData();
        Console.WriteLine(subject.BaseClassData+", "+subject.ChildClassData); // this needs to return 0, 0

        (subject2 as BaseClass).ResetAllData();
        Console.WriteLine(subject2.BaseClassData+", "+subject2.ChildClassData); // and this needs to return 0, 0

    }
}

使用虚拟和重写似乎是正确的方向,因为调用该函数将返回相同的结果,而不管是否转换为subject2中的基类(这是我需要的另一件事),但是都不会调用其自身的先前版本。

是否有一种有效的方法可以将所有内容从BaseClass函数复制到重写函数中?

1 个答案:

答案 0 :(得分:3)

您可以使用关键字base访问基类的成员。因此,在您孩子的替代方法中,只需调用base.ResetAllData()