ho semplificato il mio codice a questoclasse derivata utilizzando il metodo sbagliato
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)");
}
}
}
Il problema è che questo richiede
public void AddToTotal(double currency)
anche se io chiamo con un int e si dovrebbe usare
public override void AddToTotal(int number)
L'utilizzo del genitore restituisce il risultato previsto.
Parent d = new Child();
int i = 100;
d.AddToTotal(i);
Aggiornamento:
Grazie alla @Jan e @azyberezovsky per me che punta al specification. Ho aggiunto un metodo virtuale vuoto alla classe base per aggirare questo per ora.
Beh, sono stato in grado di replicare i risultati, e garantire che non era solo un errore di battitura, in cui il nome del metodo del sovraccarico int era diverso. – Servy
'd.AddToTotal (numero: i)' chiama il sovraccarico int, come previsto, ma non è necessario farlo ... – Servy
Vedere questa risposta per una spiegazione: http://stackoverflow.com/a/1833268/25727 – Jan