У меня есть базовый класс с виртуальным методом и несколько подклассов, которые переопределяют этот метод.
Когда я сталкиваюсь с одним из этих подклассов, я хотел бы вызвать переопределенный метод, но без знания подкласса. Я могу придумать некрасивые способы сделать это (проверить значение и привести его), но, похоже, должен быть языковой способ сделать это. Я хочу, чтобы список содержал несколько подклассов в одном и том же списке, в противном случае, очевидно, я мог бы просто создать список.
РЕДАКТИРОВАТЬ: Исправлена ошибка в коде, которая приводила к получению очень правильного первого ответа, который я получил :)
Например:
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
}