2009-06-18 117 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(或某个其他配置源)加载颜色,而不强制重新编译。