このような状況に遭遇したとき、私は驚きました。最善の解決策が何であるかわからないことに気づきました。
次の 3 つのタイプがあるとします。
class A { }
class B : A { }
class C : A { }
また、次の 3 つの方法があります。
DoSomething(A a){ }
DoSomething(B b){ }
DoSomething(C c){ }
List<A>
タイプ B および C のオブジェクトを含む があります
私はこれをしたいと思います:
foreach(A a in list) { DoSomething(a) }
基になる型に最もよく一致するメソッドを呼び出すようにしますが、もちろんこれは常に呼び出しますDoSomething(A a)
正しいメソッド呼び出しを取得するために大量の型チェックを行いたくないので、クラス A、B、または C に何も追加したくありません。
出来ますか?