我在继承类中有一个被重写多次的“修改”方法,该方法采用一个int并可以决定如何处理它。
如果方法不知道int,则将其传递给继承的类的版本。
现在,在某些情况下,对于同一int而言,不同的替代可能具有不同的情况(请参阅情况10)。
public abstract class A
{
public virtual void Modify(int i)
{
switch(i)
{
//switch cases
}
}
}
public abstract class B : A
{
public override void Modify(int i)
{
switch (i)
{
//switch cases
case 10:
//Under certain circumstances, this case should be used
break;
default:
base.Modify(i);
break;
}
}
}
public class C : B
{
public override void Modify(int i)
{
switch (i)
{
//switch cases
case 10:
//By default, this case should be used
break;
default:
base.Modify(i);
break;
}
}
我的问题:给定类C的实例,如何在不通过'base'引用的情况下访问被C覆盖的特定方法?
最佳答案
如果您的对象是C类的实例,则无论您将其保留在A还是C中,它都将调用C类的Modify
函数:
C objectC1 = new C();
A objectC2 = new C();
objectC1与objectC2相同。他们都称
C.Modify(int)
关于c# - 如何在C#中调用特定的重写方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32180294/