J'ai une classe de base avec une méthode virtuelle et plusieurs sous-classes qui remplacent cette méthode.C# appelant des méthodes de sous-classe surchargées sans savoir qu'il s'agit d'une instance de sous-classe
Lorsque je rencontre l'une de ces sous-classes, je voudrais appeler la méthode substituée, mais sans connaître la sous-classe. Je peux penser à des façons laides de le faire (vérifier une valeur et la jeter), mais il semble qu'il devrait y avoir une façon de le faire dans la langue. Je veux que la liste contienne plusieurs sous-classes dans la même liste, sinon je pourrais simplement faire une liste.
EDIT: Correction du commentaire dans le code qui a eu tort, ce qui conduit à la première réponse très appropriée, je suis :)
Par exemple:
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
}
Comment est-ce qu'il imprime Foo, s'il s'agit d'une classe dérivée remplaçant une méthode virtuelle? Typo dans votre exemple de code? – mmcrae