我想在调用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");
}
}
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");
}
}
public override void DoWork()
{
//base.DoWork();
//我想在这里只输出A::DoWork,怎么办?而调用base.DoWork();还会输出B.Dowork。
Console.WriteLine("C::DoWork");
}
}
{
public override void DoWork()
{
A a=new A();
a.DoWork();
Console.WriteLine("C::DoWork");
}
}
我对C#的语法不是太熟悉,如果确实不支持,那只有改设计,或者代码复制。其实我的设计是这样的,A是通用游戏牌桌的基类,B是散桌的德州扑克游戏牌桌,C是比赛用的德州扑克牌桌。所以C继承自B似乎更为自然,当然继承A也说的过去。或者在B之前再抽象一个德州扑克牌桌的基类,供散桌和比赛的继承。
{
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");
}
}
我也考虑过,但没有这样做的原因是B和C的实现代码基本一致,只有很少的地方不一样,所以才让C继承B。