2010-08-17 62 views
1

我是默認的PHP程序員,我需要C#.NET(微型框架,但這並不重要)項目的一點幫助。在C#.NET構造函數中擴展類和重寫屬性

基本上,我有一個類,允許控制一個遙控車或飛機速度控制器。該課程已經編寫完成,但我需要一種將設置導入課程的方式,因爲不同的電動速度控制器需要不同的設置。

我的理想設置是這樣的:

SpeedController esc = new SpeedController(SpeedControllers.TRAXXAS_XL5); 

我知道如何構造和所有的工作,但我怎麼配置SpeedControllers.TRAXXAS_XL5一部分?我會創建一個基類(Speedcontrollers),然後是一個擴展它的類,覆蓋默認值,是否正確?

有人可以指導我談論我正在談論的內容或子類的小代碼片段覆蓋父類中的屬性嗎?

+0

是SpeedControllers枚舉或一組SpeedController單身的稱呼呢? SpeedControllers.TRAXXAS_XL5的類型究竟是什麼? – 2010-08-17 04:19:09

+0

我在想TRAXXAS_XL5是擴展SpeedControllers並覆蓋一系列設置的類。 – chris12892 2010-08-17 04:32:03

回答

2

我只舉一個例子,使用假設的MaxSpeed控制器可能有。

abstract class SpeedControllers { 
    public abstract int MaxSpeed { get; } 

    public class TRAXXAS_XL5 : SpeedControllers{ 
     public override int MaxSpeed { 
      get { 
       return 30; 
      } 
     } 
    } 
} 

然後在你的SpeedController構造

class SpeedController { 
    readonly SpeedControllers properties; 
    public SpeedController(SpeedControllers properties) { 
     this.properties = properties; 
    } 
    public int MaxSpeed { 
     get { 
      return properties.MaxSpeed; 
     } 
    } 
} 

new SpeedController(new SpeedControllers.TRAXXAS_XL5())

+0

太棒了。這正是我需要的。謝謝! – chris12892 2010-08-17 04:38:19

2

IMO,要做到這一點最好的辦法是這樣的:

public struct SpeedControllers { 
    int speed; 
    int etc; 

    public SpeedControllers(int s, int e) { 
     speed = s; 
     etc = e; 
    } 

    public const SpeedControllers TRAXXAS_XL5 = new SpeedControllers(123, 345); 
    public const SpeedControllers WHATEVER = new SpeedControllers(456, 789); 
} 

而且,有SpeedController構造讀值出結構的。顯然,根據需要添加/自定義字段。

免責聲明:我沒有通過編譯器運行,只能通過我的大腦。不要試圖用這樣的飛行實際的飛機;)

+0

大聲笑的聲明,雖然我有一種感覺,SpeedControllers.TRAXXAS_XL5指的是一個內部的類/結構,或者也許是一個枚舉。 – 2010-08-17 04:22:25

+0

這絕不意味着對CLR的敲門聲。 Windows或Microsoft,但請不要在「真實」飛機的任何關鍵組件上使用Micro Framework ......它不是實時操作系統。至於你的代碼,你應該考慮靜態只讀一個常量。 – 2010-08-17 04:28:38

+0

別擔心,它不適合飛機。如果是這樣,它不會在NETMF – chris12892 2010-08-17 04:31:27

1

如果SpeedControllers.TRAXXAS_XL5只是配置數據(即所有數值),那麼我不會認爲這是派生類的最佳示例。

是的,您可以創建一個基類(SpeedController),其中包含屬性和可能的​​默認值。然後你可以創建覆蓋的派生類。

相反,邁克卡隆已經證明使用相同,並簡單的使用數據的初始化建立各專門情況下,控制器類的。我會推薦類似的東西(如果你想使配置變得容易,可能需要從外部文件加載數據)。

+0

但是,如果有三種不同的方式來實例化SpeedController?我不認爲這對車輛的品牌和型號會有很好的效果,但是如果您想要從一輛卡車'SpeedController'區分列車'SpeedController'並相應地設置一些默認對象特徵,則它可能會有效。 – 2010-08-17 04:24:54

+0

我無法從文件加載,它已嵌入。我一般會同意,是的,這將是不應該被硬編碼的東西,但在這種情況下,它是。 – chris12892 2010-08-17 04:27:08

+0

強制鏈接:http://thedailywtf.com/Articles/The-cbitmap.aspx(閱讀評論,然後滾動你的眼睛) – 2010-08-17 04:53:56