he simplificado mi código para estaclase derivada utilizando el método equivocado
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)");
}
}
}
La cuestión es que esto requiere
public void AddToTotal(double currency)
aunque yo estoy llamando con un int y se debería usar
public override void AddToTotal(int number)
El uso del elemento primario devuelve el resultado esperado.
Parent d = new Child();
int i = 100;
d.AddToTotal(i);
Actualización:
Gracias a @Jan y @azyberezovsky por dirigirme a la specification. He agregado un método virtual vacío a la clase base para solucionar esto por el momento.
Bueno, yo era capaz de replicar los resultados, y asegurarse de que no era sólo un error tipográfico en el que el nombre del método de la sobrecarga int era diferente. – Servy
'd.AddToTotal (número: i)' llama a la sobrecarga int, como se esperaba, pero no debería tener que hacer eso ... – Servy
Consulte esta respuesta para obtener una explicación: http://stackoverflow.com/a/1833268/25727 – Jan