これは一種の「宿題っぽい」および/または些細なことのように見えるかもしれませんが、それは実際のビジネス目的のためです。それは、私が概念的にやろうとしていることを説明するために私が考えることができる最も簡単な方法です。
動物のクラスと他のいくつかのクラス(鳥、猫、カンガルー)があるとします。これらはそれぞれ、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; }
}
カンガルーに鳥と猫の2人の友達がいるとします。それらを「動物」の友達のリストに(動物タイプとして)追加し、派生クラスのプロパティにアクセスする機能を保持するにはどうすればよいですか?(のように、鳥のFeatherColorなど、動物のタイプに固有のプロパティを操作できる必要があります。たとえば、それらは単なる「動物」と見なされます。
私がこれをやろうとしている理由は、後で動物の「友達」のリストを取得するときに、友達がどんな種類の動物であるかを知ることが重要だからです。動物の種類(鳥、猫など)に応じて、別のことをしたいと思います(実際には、ASP.NETページに別のテンプレートを表示しますが、特にサポートは必要ありません)。
要約すると、これに要約されます...動物のリストがある場合、リスト内の各オブジェクトの派生型が何であるかをどのように知ることができるので、それらを派生型にキャストバックするか、他のことを行うことができますこれにより、派生タイプごとにある特定の異なるプロパティにアクセスできますか?
ありがとう!