私はこのようないくつかのクラスを持っています
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
A a = new C();
a.method();
Console.ReadLine();
}
}
public class A
{
public virtual void method()
{
Console.WriteLine("METHOD FROM A");
}
}
public class B : A { }
public class C : B
{
public override void method()
{
Console.WriteLine("METHOD FROM C");
}
}
}
正しく動作し、「METHOD FROM C」を出力します
しかし
もし私がこのような状況にあったら
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
A a = new C();
a.method();
Console.ReadLine();
}
}
public class A
{
public void method()
{
Console.WriteLine("METHOD FROM A");
}
}
public class B : A { }
public class C : B
{
public new void method()
{
Console.WriteLine("METHOD FROM C");
}
}
}
「METHOD FROM A」と表示されます。キャストを採用したり、オーバーライドでメソッド宣言を変更したりせずに、最初の例と同じ動作を取得するにはどうすればよいですか?