Это может показаться "домашним заданием" и / или тривиальным, но это для реальных деловых целей; это просто самый простой способ объяснить, что я концептуально пытаюсь сделать.
Предположим, у меня есть класс 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, откуда я знаю, каким был производный тип для каждого из объектов в списке, чтобы я мог привести их обратно к их производному типу или сделать что-то еще, что позволяет мне получить к определенным, различным свойствам каждого производного типа?
Спасибо!