鉴于以下代码:
class Animal
{ }
class Dog : Animal
{ }
class Cage<T>
{
private T animal;
public Cage(T animal)
{
this.animal = animal;
}
public T Animal
{
get { return animal;}
}
}
class Program
{
static void Main(string[] args)
{
Dog dog = new Dog();
Cage<Animal> animalCage = new Cage<Animal>(dog);
Cage<Dog> dogCage = (Cage<Dog>)animalCage;
}
}
如何解决最后一个编译器错误(从 animalCage 转换为 dogCage)?
在我的代码中,我知道笼子里有一只狗,但我无法找到一种方法来施放它。我是创建转换器并从Cage<Animal>的值创建新的Cage<Dog>实例的独特替代方案吗?