Może to wydawać się rodzajem "zadania domowego" i/lub banalnym, ale ma to prawdziwy cel biznesowy; to tylko najłatwiejszy sposób, w jaki mógłbym wyjaśnić, co konceptualnie próbuję zrobić.Identyfikacja wyprowadzonych typów z listy obiektów klasy bazowej
Załóżmy, że mam klasę zwierząt i kilka innych klas (ptak, kot, kangur). Każdy z tych dziedziczy od Animal.
zwierząt może wyglądać następująco:
public class Animal
{
public Animal()
{
}
public string Name { get; set; }
public string AnimalType { get; set; }
public List<Animal> Friends { get; set; }
}
Kangur może wyglądać następująco:
public class Kangaroo : Animal
{
public Kangaroo()
{
}
public int TailLengthInches { get; set; }
}
Załóżmy, że kangur ma dwóch przyjaciół, ptak i kota. W jaki sposób mogę dodać je do listy "Zwierząt" (jak typ Animal), ale zachować możliwość dostępu do właściwości klas pochodnych? (Na przykład, wciąż muszę mieć możliwość pracy z właściwościami, które są specyficzne dla danego zwierzęcia, np. FeatherColor dla ptaka, chociaż będą uważane za "zwierzęta" .
Powód I Próbuję to zrobić, gdy później otrzymam listę "przyjaciół" zwierzęcia, ważne jest, aby wiedzieć, jaki rodzaj zwierzęcia jest przyjacielem. W zależności od typu zwierzęcia (czy to ptak, kot itp.) Chcę zrobić coś innego (pokażę inny szablon na stronie ASP.NET, ale nie potrzebuję konkretnej pomocy).
Chyba to sprowadza się do tego ... jeśli mam listę zwierząt, skąd mam wiedzieć, jaki był typ wyprowadzony dla każdego z obiektów na liście, więc mogę odrzucić je do ich typu pochodnego lub zrobić coś innego w pozwala mi dostać się do konkretnych, różnych właściwości, które są na każdym typie pochodnym?
Dzięki!
Wskazówka: Aby otrzymać kod, aby wyświetlić poprawnie, użyj przycisku 101010 w edytorze (lub tiret czterema spacjami) . – itowlson