Esto puede parecer una especie de "tarea para el hogar" y/o trivial, pero tiene un propósito comercial real; es la manera más fácil que se me ocurre para explicar lo que intento conceptualmente hacer.Identificación de tipos derivados de una lista de objetos de la clase base
Supongamos que tengo una clase de Animal y algunas otras clases (Pájaro, Gato, Canguro). Cada uno de estos hereda de Animal.
animal podría tener este aspecto:
public class Animal
{
public Animal()
{
}
public string Name { get; set; }
public string AnimalType { get; set; }
public List<Animal> Friends { get; set; }
}
canguro podría tener este aspecto:
public class Kangaroo : Animal
{
public Kangaroo()
{
}
public int TailLengthInches { get; set; }
}
Supongamos que el canguro tiene dos amigos, un pájaro y un gato. ¿Cómo podría agregarlos a la lista de amigos "Animales" (como tipo Animal), pero conservar la capacidad de acceder a las propiedades de las clases derivadas? (como en, todavía tengo que poder trabajar con propiedades que sean específicas para el tipo de animal, como FeatherColor para el ave, por ejemplo, aunque se consideren simplemente "animales".
La razón por la que Lo que trato de hacer es que cuando obtenga la lista de los "amigos" del animal, es vital que sepa qué tipo de animal es el amigo. Dependiendo del tipo de animal (ya sea un pájaro, un gato, etc.) Quiero hacer algo diferente (mostrar una plantilla diferente en una página ASP.NET, en realidad, pero no necesito ayuda con eso específicamente).
Supongo que se reduce a esto ... si tengo una lista de Animal, ¿cómo sé cuál fue el tipo derivado para cada uno de los objetos en la lista, por lo que puedo devolverlos a su tipo derivado o hacer algo más? at me permite llegar a las diferentes propiedades específicas que hay en cada tipo derivado?
Gracias!
Consejo: para obtener el código para mostrar correctamente, utilice el botón de 101.010 en el editor (o guión por cuatro espacios) . – itowlson