Я упростил свой код до этого
internal class Program
{
private static void Main(string[] args)
{
Child d = new Child();
int i = 100;
d.AddToTotal(i);
Console.ReadKey();
}
private class Parent
{
public virtual void AddToTotal(int x)
{
Console.WriteLine("Parent.AddToTotal(int)");
}
}
private class Child : Parent
{
public override void AddToTotal(int number)
{
Console.WriteLine("Child.AddToTotal(int)");
}
public void AddToTotal(double currency)
{
Console.WriteLine("Child.AddToTotal(double)");
}
}
}
Проблема в том, что это вызывает
public void AddToTotal(double currency)
, хотя я вызываю его с помощью int, и он должен использовать
public override void AddToTotal(int number)
Использование родителя возвращает ожидаемый результат.
Parent d = new Child();
int i = 100;
d.AddToTotal(i);
Обновление:
Спасибо @Jan и @azyberezovsky за указание на спецификацию ,Я добавил виртуальный пустой метод в базовый класс, чтобы обойти это сейчас.