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

C# 如何从基类型返回派生类型,c#,polymorphism,C#,Polymorphism,我有一个基类Sport,它有一个属性,它将返回给定派生类型的对象的正确类型(例如,Billiards扩展Sport,该属性将返回BilliardBall类型) 有没有比在Sport类中使用大型if语句更好的方法(如果此对象是一个台球实例,则返回BilliardBall,否则返回if…?为什么在这里谈论泛型?为什么体育运动知道所有的体育运动 首先,您可以执行以下操作: public interface IBall { } public class BilliardBall : IBall { }

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


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

为什么在这里谈论泛型?为什么体育运动知道所有的体育运动

首先,您可以执行以下操作:

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(); }
    }
}

你为什么在这里说仿制药?为什么体育运动知道所有的体育运动

首先,您可以执行以下操作:

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(); }
    }
}

你能展示一下你所说的代码吗?这似乎是一个糟糕的设计。你能展示一下你所说的代码吗?这似乎是一个糟糕的设计。