不要误会我的意思:我不想强制重写方法来调用基类,就像之前已经问过 1000 次一样:)
我想知道是否有任何方法可以强制调用基类内部方法的基类实现。
示例:
using System;
public class Program
{
public static void Main()
{
var c = new SubClass();
c.CallInfo();
}
internal class BaseClass {
protected virtual void Info(){
Console.WriteLine("BaseClass");
}
internal virtual void CallInfo() {
this.Info();
}
}
internal class SubClass : BaseClass {
protected override void Info() {
Console.WriteLine("SubClass");
}
internal override void CallInfo() {
base.CallInfo();
}
}
}
输出显然是 SubClass
。有什么办法强制CallInfo
方法BaseClass
调用自己的Info
方法,输出为 BaseClass
?
最佳答案
通过将您的 Info()
方法标记为 virtual
,您明确要求发生这种类型的继承行为。
如果要确保基类中的方法调用不被重写,则需要使用非虚拟方法,例如
internal class BaseClass {
protected virtual void Info(){
this.FinalInfo();
}
protected void FinalInfo() {
Console.WriteLine("BaseClass");
}
internal virtual void CallInfo() {
this.FinalInfo();
}
}
关于c# - 强制在基类内部调用基类虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53925886/