Как мы можем вызвать виртуальный метод из другого метода в базовом классе, даже если текущий экземпляр относится к производному классу?
Я знаю, что мы можем вызывать Method2в классе Baseиз метода класса Derived, используя base.Method2(), но я хочу вызвать его из другого виртуального метода в классе Base. Является ли это возможным?
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main( string[] args )
{
Base b = new Derived( );
b.Method1( );
}
}
public class Base
{
public virtual void Method1()
{
Console.WriteLine("Method1 in Base class.");
this.Method2( ); // I want this line to always call Method2 in Base class, even if the current instance is a Derived object.
// I want 'this' here to always refer to the Base class. Is it possible?
}
public virtual void Method2()
{
Console.WriteLine( "Method2 in Base class." );
}
}
public class Derived : Base
{
public override void Method1()
{
Console.WriteLine( "Method1 in Derived class." );
base.Method1();
}
public override void Method2()
{
Console.WriteLine( "Method2 in Derived class." );
}
}
}
С помощью приведенных выше кодов он выведет:
Method1 in Derived class.
Method1 in Base class.
Method2 in Derived class.
, в то время как я ожидал:
Method1 in Derived class.
Method1 in Base class.
Method2 in Base class.