我想在调用class C.Dowork的时候调用A.Dowork,请问能做到吗?
    public class A
    {
        virtual public void DoWork()
        {
            Console.WriteLine("A::DoWork");
        }
    }    public class B : A
    {
        public override void DoWork()
        {
            base.DoWork();            Console.WriteLine("B::DoWork");
        }
    }    public class C : B
    {
        public override void DoWork()
        {
            //base.DoWork();
            //我想在这里只输出A::DoWork,怎么办?而调用base.DoWork();还会输出B.Dowork。
            Console.WriteLine("C::DoWork");
        }
    }

解决方案 »

  1.   

     public class C :A    {
            public override void DoWork()
            {
                //base.DoWork();
                //我想在这里只输出A::DoWork,怎么办?而调用base.DoWork();还会输出B.Dowork。
                Console.WriteLine("C::DoWork");
            }
        }
      

  2.   

    public class C : B
        {
            public override void DoWork()
            {
                A a=new A();
                a.DoWork();
                Console.WriteLine("C::DoWork");
            }
        }
      

  3.   


    我对C#的语法不是太熟悉,如果确实不支持,那只有改设计,或者代码复制。其实我的设计是这样的,A是通用游戏牌桌的基类,B是散桌的德州扑克游戏牌桌,C是比赛用的德州扑克牌桌。所以C继承自B似乎更为自然,当然继承A也说的过去。或者在B之前再抽象一个德州扑克牌桌的基类,供散桌和比赛的继承。
      

  4.   

        public class A
        {
            virtual public void DoWork()
            {
                Console.WriteLine("A::DoWork");
            }
        }    public class B : A
        {
            public new void DoWork()
            {
                base.DoWork();            Console.WriteLine("B::DoWork");
            }
        }    public class C : B
        {
            public new void DoWork()
            {
                ((A)this).DoWork();
                //我想在这里只输出A::DoWork,怎么办?而调用base.DoWork();还会输出B.Dowork。
                Console.WriteLine("C::DoWork");
            }
        }
      

  5.   


    我也考虑过,但没有这样做的原因是B和C的实现代码基本一致,只有很少的地方不一样,所以才让C继承B。