¿Cómo puedo obtener cambiar este fragmento para agregar correctamente una instancia de A
a List<A>
, B
a List<B>
, etc.?Cómo agregar una T a la lista <T> donde la lista <T> se enmascara como 'dinámica' y T como 'objeto'?
// 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);
La excepción se produce porque, mientras que la Add()
se encuentra por el aglutinante, que pasa en dynamic
que falla resolución de sobrecarga. Prefiero no para cambiar lo anterior para usar la reflexión, o al menos para minimizar eso. Tengo acceso a la instancia de System.Type
para cada uno de A
y List<A>
. La clase o el método que contiene el código anterior en sí no es genérico.