2009-06-18 37 views
0

我想設置一個枚舉,將某些項目特定值映射到標準System.Drawing.Color枚舉。有沒有辦法將枚舉映射到C#.NET 3.5中的另一個枚舉?

這裏是想我做的想法:

public enum SessionColors 
{ 
    Highlights = Color.HotPink, 
    Overlays = Color.LightBlue, 
    Redaction = Color.Black 
} 

的目標是有它,所以我可以使用的東西SessionColors.Highlights我認同爲一大亮點,然而,我可以改變枚舉映射稍後並影響所有後續的顏色。

我意識到我可以查找Color.HotPink等的值,只是使用它們,但它不那麼清楚。有更好的想法嗎?

回答

7

公共常量只要做到這一點:

public static class SessionColors 
{ 
    public static readonly Color Highlights = Color.HotPink; 
    public static readonly Color Overlays = Color.LightBlue; 
    public static readonly Color Redaction = Color.Black; 
} 
+4

只是爲了擴大這個,而不是張貼我的答案,你*可以*枚舉值在你自己的enum中映射到另一個枚舉中的值。正如Hans所說,你在這裏處理的不是一個枚舉值,而是一個Color(它是一個結構體)。 – 2009-06-18 15:58:52

3

Colors.HotPink不是一個枚舉值,它是靜態類的顏色返回一個顏色值的靜態屬性。並且該Color值是一個結構,而不是一個整數。

因此,您不能使用Color作爲枚舉的基礎值,因爲它僅限於整型。

2

我個人會用靜態類中的顏色屬性來代替枚舉。這樣做有許多好處,但最有利的可能是,這可能允許您在運行時從app.config(或某個其他配置源)加載顏色,而不強制重新編譯。