A
のインスタンスをList<A>
、B
、List<B>
などに正しく追加するには、このスニペットをどのように変更すればよいですか?Tをリストに追加する方法<T>リスト<T>は「動的」、Tは「オブジェクト」となります。
// someChild's actual type is A
object someChild = GetObject();
// collection's actual type is List<A> though method below returns object
dynamic list = GetListFromSomewhere(...);
// code below throws a RuntimeBinderException
list.Add(somechild);
Add()
がバインダーによって発見されている間、それはオーバーロード解決に失敗したdynamic
に渡し、ため例外がスローされます。私はではなく、を使用してリフレクションを使用するか、少なくともそれを最小限に抑えることができます。私はA
とList<A>
のそれぞれに対してのインスタンスにアクセスできます。上記のコードを含むクラスまたはメソッド自体は一般的ではありません。