我可以将特定模型类的IList转换为MVC 3 .Net c#项目中的EntityObject类的IList吗?特定的Model Class,如果定义为EntityObject类的子类。当我试图演员时,我得到了错误:
无法投射类型的对象 'System.Collections.Generic.List
1[GesDis.Models.TiposCursosCEF]' to type 'System.Collections.Generic.IList
1 [System.Data.Objects.DataClasses.EntityObject]'。“
答案 0 :(得分:2)
这是一个共同方差的情况。也就是说,仅仅因为B
来自A
,并且您可以指定A a = new B()
,这并不意味着您可以将T<B>
分配给T<A>
}。这些只是两种不同的泛型类型,并且赋值不起作用。
相反,你需要做这样的事情:
IList<EntityObject> entityObjects = modelObjects.Cast<EntityObject>().ToList();
答案 1 :(得分:1)
不,如果你可以施展它,你可以这样做:
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>