#c# #asp.net-mvc-3
#c# #asp.net-mvc-3
Вопрос:
Могу ли я преобразовать IList определенного класса модели в IList класса EntityObject в проекте MVC 3 .Net c #? Конкретный класс модели, если он определен как подкласс класса EntityObject . Когда я пытаюсь выполнить приведение, я получаю сообщение об ошибке:
Невозможно привести объект типа ‘System.Коллекции.Общий список
1[GesDis.Models.TiposCursosCEF]' to
1[System.Data.Objects.Классы данных.EntityObject]’ .»
type
'System.Collections.Generic.IList
Ответ №1:
Это случай совпадения. То есть, только потому B
, что происходит от A
, и вы можете назначить A a = new B()
, это не значит, что вы можете назначить T<B>
T<A>
. Это всего лишь два разных общих типа, и назначение не работает.
Вместо этого вам нужно сделать что-то вроде этого:
IList<EntityObject> entityObjects = modelObjects.Cast<EntityObject>().ToList();
Ответ №2:
Нет, если бы вы могли его использовать, вы могли бы сделать что-то подобное:
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>