использовать метод расширения Cast ()
so:
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
cat.Play(new List<Cat>().Cast<Animal>());
}
}
Причиной этого является b / c .net 3.5 не поддерживает ковариацию, но 4.0 делает :)