Mam dwie klasy: klasę podstawową (Animal) i klasę wywodzącą się z (Cat). Klasa klasy zawiera jedną metodę wirtualną Zagraj, która zajmuje listę jako wejście parameter.Something jak tenLista Cast <> z klasy pochodnej na listę <> z klasy bazowej
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>());
}
}
}
kiedy mogę skompilować powyższy program, pojawia się następujący błąd
Error 2 Argument 1: cannot convert from 'System.Collections.Generic.List' to 'System.Collections.Generic.List'
Czy mimo to do osiągnięcia tego celu?
możliwe duplikat [Casting kolekcji generycznych do typu bazowego] (http: //stackoverflow.com/questions/539287/casting-a-generic-collection-to-base-type) – finnw
Pierwszą rzeczą do zrobienia jest zmiana argumentu Lista <> na argument IEnumerable <>. –
możliwy duplikat [Lista konwersji <> obiektów klasy pochodnej do Listy <> obiektów klasy bazowej] (http://stackoverflow.com/questions/1817300/convert-list-of-derived-class-objects-to-list -of-base-class-objects) –