我有一个基类 Sport,它有一个属性将返回正确的对象类型,它应该是给定的派生类型(例如,Billiards 扩展了 Sport,并且该属性将返回 BilliardBall 类型)。
有没有比在 Sport 类中使用大的 if 语句更好的方法(如果此对象是 Billiards 实例,则返回 BilliardBall,否则如果...)?
我有一个基类 Sport,它有一个属性将返回正确的对象类型,它应该是给定的派生类型(例如,Billiards 扩展了 Sport,并且该属性将返回 BilliardBall 类型)。
有没有比在 Sport 类中使用大的 if 语句更好的方法(如果此对象是 Billiards 实例,则返回 BilliardBall,否则如果...)?
你为什么在这里谈论泛型?为什么 Sport 知道所有的运动?
对于初学者,您可以执行以下操作:
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(); }
}
}