Сначала вы не должны скрывать метод базового класса, используя ключевое слово new
, вы просто должны переопределить его методом производного класса, используя ключевые слова virtual
и override
.Это также исправит проблему с вызовом метода из базового класса, а не из производного.
Для получения подробной информации о том, как это работает, вы должны прочитать о наследовании в C # .
Когда вы скрываете метод с помощью ключевого слова new
, он всегда использует реализацию метода, который находится вваш объявленный тип, в вашем случае это Parent
.Но если вы используете virtual
и override
, это использует реализацию метода в инициализированном типе, в вашем случае это Child
.
using System;
public class Parent
{
public virtual void foo()
{
Console.WriteLine("Parent");
}
}
public class Child : Parent
{
public override void foo()
{
Console.WriteLine("Child");
}
}