Casting IList<[ModelObject]> to IList<EntityObject&
本文关键字:lt IList to EntityObject gt Casting ModelObject | 更新日期: 2023-09-27 18:08:52
我可以在MVC 3 .Net c#项目中转换特定模型类的illist到类EntityObject的illist吗?特定的模型类被定义为EntityObject类的子类。当我尝试强制转换时,我得到了错误:
无法强制转换类型的对象'System.Collections.Generic.List
1[GesDis.Models.TiposCursosCEF]' to type 'System.Collections.Generic.IList
1[system . data . objects . datacclasses . entityobject]'。"
这是一个协方差的例子。也就是说,B
是由A
衍生出来的,你可以把A a = new B()
赋值,并不意味着你可以把T<B>
赋值给T<A>
。这是两种不同的泛型,赋值操作不起作用
相反,你需要这样做:
IList<EntityObject> entityObjects = modelObjects.Cast<EntityObject>().ToList();
不,如果你可以强制转换,你可以这样做:
class Base {}
class Derived : Base {}
class SomeOther : Base {}
var list = new List<Derived>();
var baseList = (IList<Base>)list;
baseList.Add(new SomeOther()); // oops, add SomeOther to a List<Derived>