我想用例子解释主要问题。
public class BaseClass
{
public virtual void Add()
{
Console.WriteLine("Add call from BaseClass");
}
public virtual void Edit()
{
Console.WriteLine(" Edit call from BaseClass");
this.Get();
}
public virtual void Get()
{
Console.WriteLine(" Get call from BaseClass");
}
}
public class DerivedClass:BaseClass
{
public override void Add()
{
Console.WriteLine(" Add call from DerivedClass");
base.Edit();
}
public override void Edit()
{
Console.WriteLine(" Edit call from DerivedClass");
}
public override void Get()
{
Console.WriteLine(" Get call from DerivedClass");
}
}
并称之为
DerivedClass d = new DerivedClass();
d.Add();
结果:
但我希望得到结果:
当派生类调用自己的添加方法时,添加方法会调用基类编辑方法。当从派生类调用基类编辑方法时,它会调用派生类的 get 方法。但我想调用基类的get 方法。 我怎样才能做到这一点?
答案 0 :(得分:6)
我怎样才能做到这一点?
如果您不想要虚拟发送,那么不会发送虚拟方法。调度非虚方法。这意味着必须存在非虚方法,所以让我们写一个。然后很明显它必须如何调用:
public class BaseClass
{
public virtual void Add() { ... }
public virtual void Edit() { this.BaseGet(); }
public virtual void Get() { this.BaseGet(); }
private void BaseGet() { ... }
}
设计你的类层次结构的方法,但不知道你真正想要做什么,很难建议你。