假设我有以下课程:
class Animal
{
public long Id { get; set; }
public string Name { get; set; }
}
class Dog:Animal
{
public void sniffBum()
{
Console.WriteLine("sniff sniff sniff");
}
}
如果我有一个实例Animal
,我如何将它转换为一个Dog
?像这样的东西:
Animal a = new Animal();
if ( some logic to determine that this animal is a dog )
{
Dog d = (Dog)a;
d.sniffBum();
}
本质上我不能使用接口。我总会有一个Animal
像这样从我的数据库中出来的对象。Dog
没有更多的参数Animal
,只有新的方法。
我可以创建一个新Dog
对象,然后传递值,(或者有一个采用 type 的构造函数Animal
),但这看起来很混乱。