我有一個帶有虛擬方法的基類以及覆蓋該方法的多個子類。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