次のクラスがあるとします。
class Animal
{
public long Id { get; set; }
public string Name { get; set; }
}
class Dog:Animal
{
public void sniffBum()
{
Console.WriteLine("sniff sniff sniff");
}
}
のインスタンスがある場合、Animalそれを にキャストするにはどうすればよいDogですか? このようなもの:
Animal a = new Animal();
if ( some logic to determine that this animal is a dog )
{
Dog d = (Dog)a;
d.sniffBum();
}
基本的に、インターフェイスを使用できません。そのように、データベースから常にAnimalオブジェクトが出てきます。Dog持っている以上のパラメータはAnimalなく、新しいメソッドだけです。
新しいDogオブジェクトを作成して値を渡すこともできますが (または type を受け取るコンストラクターを使用することもできますAnimal)、これは面倒です。