I have a base class with a virtual method, and multiple subclasses that override that method.
When I encounter one of those subclasses, I would like to call the overridden method, but without knowledge of the subclass. I can think of ugly ways to do this (check a value and cast it), but it seems like there should be an in-language way to do it. I want the List to contain multiple subclasses within the same list, otherwise obviously I could just make a List.
EDIT: Fixed the comment in the code that was wrong, which lead to the very appropriate first answer I got 🙂
For instance:
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 }
1 Answer