2012-10-01 71 views
0

我有一個基類Sport,它具有一個屬性將返回適當的類型的對象應該是給定的派生類型(例如,檯球延伸體育,和財產將返回BilliardBall類型)。如何從基類型返回派生類型

有沒有更好的方法來做到這一點,而不是在Sport類中有一個大的if語句(如果這個對象是一個檯球實例然後返回BilliardBall,否則如果...)?

+1

你能證明你在談論的代碼?這似乎可能是一個糟糕的設計。 –

回答

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