C# Aufruf überschrieben Unterklasse Methoden, ohne zu wissen, dass es eine Unterklasse-Instanz

Ich habe eine base-Klasse mit einer virtuellen Methode, und mehrere Unterklassen überschreiben diese Methode.

Wenn ich auf eines dieser Unterklassen, ich würde gerne die überschriebene Methode, aber ohne Kenntnis der Unterklasse. Ich kann mir denken, hässlich Möglichkeiten, dies zu tun (prüfen auf Wert und werfe es), aber es scheint, wie es sein sollte, eine Sprache Weg, es zu tun. Ich möchte der Liste enthalten mehrere Unterklassen innerhalb der gleichen Liste, sonst natürlich könnte ich auch einfach eine Liste machen.

EDIT: Behoben, wird der Kommentar in den code, der falsch war, was dazu führte, das sehr geeignete erste Antwort bekam ich 🙂

Zum Beispiel:

Class Foo 
{
    public virtual printMe()
    {
        Console.Writeline("FOO");
    }
}

Class Bar : Foo 
{
    public override printMe()
    {
        Console.Writeline("BAR");
    }
}

List<Foo> list = new List<Foo>();
//then populate this list with various 'Bar' and other overriden Foos

foreach (Foo foo in list) 
{
    foo.printMe(); //prints FOO.. Would like it to print BAR
} 
wie ist es Druck-Foo, wenn es einer abgeleiteten Klasse überschreiben einer virtuellen Methode? Tippfehler in deinem code-Beispiel?

InformationsquelleAutor John Noonan | 2008-12-23

Schreibe einen Kommentar