2011-10-12 75 views
1

我知道也許這個問題已被問過,但我似乎無法找到一個合適的解決方案(記住,我不是一個C#專家,但中級用戶)...c#覆蓋枚舉

我準備了一個基類,包括一個枚舉(動畫狀態),用於動畫狀態,我的屏幕對象可能有(例如,士兵可能有不同的狀態,而鳥可能有另一組狀態..)。基類正在服務爲我的動畫屏幕對象存儲更新方法和其他東西的目的(像以同樣的方式對所有這些對象進行動畫處理)...基類中的枚舉在內部是(自然)空的..我有使用枚舉成員編寫的方法...

如果我通過「public new enum ...」在我的子類中定義枚舉,我可以「繼承」它..對吧?此外,有趣的是,我有一個基礎類字典,我試圖從兒童(即士兵,或鳥),它的基地(動畫物體)類傳遞它...但我不能...

我覺得我做錯了什麼或缺少任何想法?

+5

代碼示例將有助於解釋您正在嘗試做什麼。 –

+0

你不能覆蓋C#中的枚舉: http://stackoverflow.com/questions/4704201/what-is-the-best-way-to-override-enums – Tom

回答

2

您無法展開枚舉。你可以在派生類中創建新的枚舉,但它們是不同的。

我想你應該只使用int常量。

3

那麼,你不能直接用C#中的枚舉來完成它。

我會建議採取更多的面向對象的方法,並用真實對象替換枚舉。通過這種方式,您可以在基類中定義一個接口IAnimationState,並添加一個抽象方法getAnimationState()。在屏幕對象類中,您只需實現此方法,返回接口IAnimationState的一些特定實現。這樣,您可以將一些邏輯放入小型動畫狀態類中,從而使您的項目更加模塊化。

0

枚舉類型表示一組簡單的值。而已。你試圖使用枚舉作爲類的類型時,它根本不適合賬單。

只需創建一個枚舉(如果實際需要)併爲複雜操作創建一個「真實」類型。

enum SomeEnum { Foo, Bar } 

class Whatever 
{ 
    public SomeEnum { get { return SomeEnum.Foo; } } 
} 

這個問題的developing a solution without really understanding the problem.而是提出解決方案,並要求我們找出過去的20%,它沒有任何意義,告訴我們你實際上是試圖完成一個很好的例子。這裏有人可能有更好的方法,你甚至沒有想到。