C # emitir una lista <ObjBase> como lista <Obj>
¿Por qué no puedo lanzar unList<ObjBase>
comoList<Obj>
? ¿Por qué no funciona lo siguiente:
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
return getSomeStuff() as List<Obj>;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
En su lugar tengo que hacer esto:
internal class ObjBase
{
}
internal class Obj : ObjBase
{
}
internal class ObjManager
{
internal List<Obj> returnStuff()
{
List<ObjBase> returnedList = getSomeStuff();
List<Obj> listToReturn = new List<Obj>(returnedList.Count);
foreach (ObjBase currentBaseObject in returnedList)
{
listToReturn.Add(currentBaseObject as Obj);
}
return listToReturn;
}
private List<ObjBase> getSomeStuff()
{
return new List<ObjBase>();
}
}
Recibo el siguiente error en Visual Studio 2008 (acortado para facilitar la lectura):
No se puede convertir el tipo 'Lista' a 'Lista' mediante una conversión de referencia, conversión de boxeo, conversión de unboxing, conversión de ajuste o conversión de tipo nulo
Gracias.