我有一个基类Sport,它有一个属性将返回适用于给定派生类型的对象类型(例如,Billiards扩展Sport,属性将返回BilliardBall类型)。
有没有比在Sport类中使用大型if语句更好的方法(如果此对象是Billiards实例,则返回BilliardBall,否则返回...)?
答案 0 :(得分:5)
你为什么在这里谈论仿制药?为什么体育运动知道所有的运动?
对于初学者,您可以执行以下操作:
public interface IBall
{
}
public class BilliardBall : IBall
{
}
public abstract class Sport
{
protected abstract IBall Ball { get; }
}
public class Billiards : Sport
{
protected override IBall Ball
{
get { return new BilliardBall(); }
}
}