有没有办法将枚举映射到C#.NET 3.5中的另一个枚举?

时间:2009-06-18 15:51:33

标签: .net c#-3.0 enums

我正在尝试设置一个枚举,将某些特定于项目的值映射到标准的System.Drawing.Color枚举。

以下是我想做的事情的想法:

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

目标是拥有它所以我可以使用SessionColors.Highlights来识别我认为是一个突出显示的东西,然而,我可以稍后更改枚举映射并影响所有后续颜色。

我意识到我可以查看Color.HotPink等的值。并且只是使用它们但它并不那么清楚。还有更好的主意吗?

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:3)

Colors.HotPink不是枚举值,它是返回Color值的静态类Colors的静态属性。而Color值是一个结构,而不是一个整数。

因此,您不能将Color用作枚举的基础值,因为它仅限于整数类型。

答案 2 :(得分:2)

我个人会在静态类中使用Color属性而不是Enumerations。这有很多优点,但最有可能的是,这可能允许您在运行时从app.config(或其他一些配置源)加载颜色,而不必强制重新编译。