我有一个子类,它在其基类中覆盖了一个抽象的虚方法。 我可以通过子类实例访问基类的虚方法吗?
感谢。
例如
public abstract class BaseClass{
public virtual void MyMethod(){...}
}
public Class SubClass{
public override void MyMethod(){...}
}
public static void Main(string[] args)
{
SubClass MyObject = new SubClass();
MyObject.MyMethod(); // need a way to refer to BaseClass.MyMethod, instead of SubClass.MyMethod().
}
答案 0 :(得分:1)
是。
public class SubClass : BaseClass
{
public override void MyMethod()
{
base.MyMethod();
}
}
答案 1 :(得分:1)
不,没有合理的方法从类外部调用基本虚拟方法。
如果控制派生类,最简单的方法是通过其他方法公开base.MyMethod
。如果你不能改变派生类,我认为你运气不好。
即使您可以尝试通过反射获取精确方法并使用给定实例调用它,它仍将对派生方法执行虚拟调用。
var d = new SubClass();
var m = typeof(BaseClass).GetMethod("MyMethod");
m.Invoke(d, new object[0]); // calls SubClass.MyMethod