标题可能不清楚,但请看下面的图案
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
or类的新实例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;
}