如何从基类型返回派生类型

jkh*_*jkh 0 c# polymorphism

我有一个基类Sport,它有一个属性将返回适当类型的对象,它应该是给定的派生类型(例如,Billiards扩展Sport,属性将返回BilliardBall类型).

有没有比在Sport类中使用大型if语句更好的方法(如果此对象是Billiards实例,则返回BilliardBall,否则返回...)?

man*_*lds 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(); }
    }
}
Run Code Online (Sandbox Code Playgroud)