Prueba esto:
void foobar(Type t)
{
var listType = typeof(List<>);
var constructedListType = listType.MakeGenericType(t);
var instance = Activator.CreateInstance(constructedListType);
}
Ahora qué hacer con instance
? Puesto que usted no sabe el tipo de contenido de su lista, probablemente lo mejor que podría hacer sería para echar instance
como IList
por lo que podría tener algo más que una simple object
:
// Now you have a list - it isn't strongly typed but at least you
// can work with it and use it to some degree.
var instance = (IList)Activator.CreateInstance(constructedListType);
¿Qué esperas hacer con una lista que no conoces el tipo de en tiempo de compilación? – dtb
¿Es capaz de escribir esto como una función genérica, como en 'foobar vacío() {IList newList = nueva lista (); } ' –
Juliet
Tengo la sensación de que esto podría ser un olor código, como resultado de hacer frente a un problema mayor en el mal sentido. –