我有一个带有虚拟方法的基类以及覆盖该方法的多个子类。C#调用被重写的子类方法,但不知道它是子类实例
当我遇到这些子类之一时,我想调用重写的方法,但不知道子类。我可以想到丑陋的方法来做到这一点(检查一个值并进行转换),但似乎应该有一种用语言来表达的方式。我希望List在同一个列表中包含多个子类,否则显然我只能创建一个List。
编辑:修正了,这是错误的代码,导致非常合适的第一个答案我:)
例如评论,:
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
}
如何打印Foo,如果它是派生类重写虚拟方法?在你的代码示例中错字? – mmcrae 2015-06-24 15:48:41