Все упоминают метод литья уже. Если вы не можете обновить до 4.0, способ скрыть приведение
class Cat : Animal
{
public override void Play(List<Animal> animal)
{
Play((List<Cat>)animal);
}
public virtual void Play(List<Cat> animal)
{
}
}
Это трюк IEnumable
и IEnumarable<T>
для GetEnumerator