タイトルがわかりにくいかもしれませんが、下のパターンを見てください
public abstract class Animal
{
public abstract Dog GetDog { get; }
public abstract Cat GetCat { get; }
}
public class Dog : Animal
{
public override Dog GetDog {
get { return this; }
}
public override Cat GetCat {
get { return null; }
}
}
これは、基本クラスにプロパティを持ち、派生型を返すことは悪い習慣と見なされますか? または、次のようなことをする必要があります
public abstract AnimalTypeEnum AnimalType { get; }
編集:コメントに基づいて、私が達成しようとしていることをより明確にする必要があると思います。Dog
またはクラスの新しいインスタンスは、Cat
特定の基準に基づいて別の関数によって作成されAnimal
、呼び出し元に型を返します。呼び出し元のメソッドは、返されたインスタンスの型をチェックし、それに応じて使用します。
public Animal CreateAnimal(string path)
{
//Process the document in path and create either a new instance of dog or cat
Dog dg = new Dog();
return dg;
}