No se puede convertir un objeto de tipo “objeto {System.Collections.Generic.List }” como ICollection

¿Por qué no puede lanzar un objeto que en tiempo de ejecución tiene el tipo de object {System.Collections.Generic.List} como un ICollection ?

Estoy seguro de que es algo obvio, pero no puedo entenderlo.

Da la excepción –

No se pueden convertir objetos de tipo ‘System.Collections.Generic.List 1[System.String[]]' to type 'System.Collections.Generic.ICollection 1 [System.Object]’.

Antes de C # 4.0, los generics no son covariantes. Si no está utilizando C # 4.0, puede realizar esta conversión de esta manera:

 List list = new List(); //...Fill the list... ICollection collection = list.ConvertAll(item => item as object); 

Ver variación en interfaces genéricas