仮想メソッドを持つ基本クラスと、そのメソッドをオーバーライドする複数のサブクラスがあります。
これらのサブクラスの1つに遭遇したとき、オーバーライドされたメソッドを呼び出したいのですが、サブクラスの知識がありません。これを行うための醜い方法(値をチェックしてキャストする)を考えることはできますが、言語で行う方法があるはずです。リストに同じリスト内に複数のサブクラスを含めたいのですが、そうでなければ、明らかにリストを作成することができます。
編集:間違っていたコードのコメントを修正しました。これは、私が得た非常に適切な最初の答えにつながりました:)
例えば:
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
}