【发布时间】:2015-08-24 10:41:47
【问题描述】:
我有一个“修改”方法在继承类时被多次覆盖,该类接受一个 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 的实例,我如何访问被 C 覆盖的特定方法而不通过“基”引用它?
【问题讨论】:
-
你不能指定调用哪个父方法。你只能在你的方法中加入条件来实现这一点。但是我不确定你为什么需要这个。
-
你不能吗? :
C objC = new C(); objC.Modify(10); -
“我如何访问被 C 覆盖的特定方法”是什么意思?您持有哪种类型的实例?基地的?
-
我持有一个类型为 A 的 C 实例。
A myObject = new C();
标签: c# overriding