У меня есть два класса: базовый класс (Animal) и класс, полученный из it (Cat). Базовый класс содержит один виртуальный метод Play, который принимает List as вход parameter.Something как этотСписок кастингов <> из класса Derived в список <> базового класса
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication9
{
class Animal
{
public virtual void Play(List<Animal> animal) { }
}
class Cat : Animal
{
public override void Play(List<Animal> animal)
{
}
}
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
cat.Play(new List<Cat>());
}
}
}
Когда я скомпилировать выше программы, я получаю следующее сообщение об ошибке
Error 2 Argument 1: cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'
есть в любом случае для достижения этой цели?
возможно дубликат [Бросая общий сбор для базового типа] (HTTP: //stackoverflow.com/questions/539287/casting-a-generic-collection-to-base-type) – finnw
Первое, что нужно сделать, это изменить аргумент List <> на аргумент IEnumerable <>. –
Возможный дубликат [Преобразование списка <> объектов производного класса в Список <> объектов базового класса] (http://stackoverflow.com/questions/1817300/convert-list-of-derived-class-objects-to-list -of-base-class-objects) –