转换IList&lt; [ModelObject]&gt;到IList <entityobject> </entityobject>

时间:2014-06-17 10:56:08

标签: c# asp.net-mvc-3

我可以将特定模型类的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]'。“

2 个答案:

答案 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>