Нет, вы не можете этого сделать.Назначение виртуальных методов состоит в том, что производные классы могут переопределять реализацию и что реализация используется даже при вызове ее из базовых классов.
Если это вызывает проблемы, то метод, который вы хотите запустить, не должен быть виртуальным методом.
Это сработает, хотя оно не будет форсировать реализацию подклассом вроде виртуального, оно позволит вам переопределить его.
public class Program
{
public static void Main()
{
var c = new SubClass();
c.CallInfo();
}
internal class BaseClass
{
protected void Info()
{
Console.WriteLine("BaseClass");
}
internal virtual void CallInfo()
{
this.Info();
}
}
internal class SubClass : BaseClass
{
protected new void Info()
{
Console.WriteLine("SubClass");
}
internal override void CallInfo()
{
base.CallInfo();
}
}
}