Ich habe meinen Code zu diesemabgeleiteten Klasse die falsche Methode
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)");
}
}
}
vereinfacht Das Problem ist, dass diese Anrufe
public void AddToTotal(double currency)
obwohl ich es mit einem int nenne und es sollte
verwenden werdenpublic override void AddToTotal(int number)
Die Verwendung des übergeordneten Elements gibt das erwartete Ergebnis zurück.
Parent d = new Child();
int i = 100;
d.AddToTotal(i);
Update:
Dank @Jan und @azyberezovsky für mich zum specification zeigt. Ich habe der Basisklasse eine virtuelle leere Methode hinzugefügt, um dies jetzt zu umgehen.
Nun, ich war in der Lage, die Ergebnisse zu replizieren, und sicherzustellen, dass es in dem nicht nur ein Tippfehler war die Methode Name der int Überlastung unterschiedlich war. – Servy
'd.AddToTotal (Nummer: i)' ruft die Int-Überladung wie erwartet auf, aber Sie sollten das nicht tun müssen ... – Servy
Finden Sie diese Antwort für eine Erklärung: http://stackoverflow.com/a/1833268/25727 – Jan