Claro que puedes:
var fooList = Activator
.CreateInstance(typeof(List<>)
.MakeGenericType(Foo.GetType()));
El problema aquí es que es fooList
del tipo object
por lo que aún tendría que convertirlo en un tipo "utilizable". Pero, ¿cómo se vería este tipo? Como una estructura de datos que admite agregar y buscar objetos del tipo T
List<T>
(o más bien IList<>
) no es covariante en T
por lo que no puede convertir List<Foo>
en List<IFoo>
donde Foo: IFoo
. Puede convertirlo a IEnumerable<T>
, que es covariante en T
.
Si está utilizando C# 4.0, también podría considerar el envío de fooList
al para que al menos pueda usarlo como una lista (por ejemplo, agregar, buscar y eliminar objetos).
Teniendo en cuenta todo esto y el hecho de que no tiene ningún tipo de seguridad en tiempo de compilación al crear tipos en tiempo de ejecución de todos modos, simplemente usar List<object>
es probablemente la mejor/más pragmática manera de ir en este caso.
¿Algo que te detenga simplemente creando una 'Lista
@ Flynn1179, déjame ver cómo lo haces por favor. – xport
'List