这可能看起来有点“家庭作业”和/或微不足道,但它是出于真正的商业目的;这只是我能想到的最简单的方法来解释我在概念上试图做什么。
假设我有一个 Animal 类和一些其他类(Bird、Cat、Kangaroo)。这些中的每一个都继承自 Animal。
动物可能看起来像这样:
public class Animal
{
public Animal()
{
}
public string Name { get; set; }
public string AnimalType { get; set; }
public List<Animal> Friends { get; set; }
}
袋鼠可能看起来像这样:
public class Kangaroo : Animal
{
public Kangaroo()
{
}
public int TailLengthInches { get; set; }
}
假设袋鼠有两个朋友,一只鸟和一只猫。我怎样才能将这些添加到“动物”朋友列表中(作为动物类型),但保留访问派生类属性的能力?(例如,我仍然需要能够使用特定于动物类型的属性,例如鸟类的 FeatherColor,即使它们将被视为只是“动物”。
我尝试这样做的原因是,当我后来得到动物的“朋友”列表时,我知道朋友是什么类型的动物是至关重要的。根据动物类型(无论是鸟、猫等),我想做一些不同的事情(实际上,在 ASP.NET 页面上显示不同的模板,但我不需要专门的帮助)。
我想这可以归结为...如果我有一个 Animal 列表,我怎么知道列表中每个对象的派生类型是什么,所以我可以将它们转换回它们的派生类型或做其他事情这使我能够获得每个派生类型上特定的不同属性?
谢谢!