我有一些扩展的C#类,并且已经覆盖了方法。
public class BaseClass{
public abstract void method(){return 0;}
}
public class OverClass : BaseClass{
public override void method(){
// some code
return 2;
}
}
在重写方法中,我可以调用base.method()
来调用其基类的原始方法。
1)我怎样才能从班级以外的地方做到这一点?这样我就可以从OverClass的对象引用中明确调用BaseClass的方法。
2)从BaseClass的对象,我可以调用OverClass的方法吗?
3)如果方法是静态的,从BaseClass的静态main,我可以调用OverClass的方法吗?
我需要这个,因为BaseClass中的某些方法具有不需要重写的可重用代码,以及其他抽象/虚拟方法和具有特定OverClass代码的方法。因此,从BaseClass中的代码,我需要调用OverClass的重写方法,而不是BaseClass的抽象/虚拟方法。
答案 0 :(得分:0)
public class BaseClass{
public abstract void method(){ return 0; }
public void concrete(){ method(); }
}
public class OverClass : BaseClass{
public override void method(){
// some code
return 2;
}
}
//You can call concrete like that:
instanceOverClass.concrete();
instanceBaseClass.conctere();
BaseClass instanceOverClass = new OverClass();
(OverClass)instanceOverClass.method();
//Note that here we will call overriden method from OverClass class
instanceOverClass.method();
编辑:我想要注意这个反映不会反映,女巫会像你想要的那样做,但反射非常非常慢。