C#:从枚举到类的自动转换

Sig*_*erm 3 c# enums unity-game-engine

考虑这种情况.

  1. 有一个struct Color(由别人写)
  2. enum ColorCode一个实现html命名的颜色代码.
  3. 有一个转换ColorCode为的静态函数Color
  4. 我希望能够这样做:

    Color tmp = ....;
    tmp = ColorCode.Aqua;
    
    Run Code Online (Sandbox Code Playgroud)

如何在没有复制粘贴文本140次的情况下执行此操作?

ColorCode只要上面的行有效,我真的不在乎(枚举,类,等等).

问题:

C#不允许我为枚举定义运算符.我也没有任何宏来制作一些很好的人类可读表格ColorCode.

限制:

内容ColorCode应该是ints,但应该是可分配/可兑换的Color.


代码片段:

public enum ColorCode{
    AliceBlue = 0xF0F8FF,
    AntiqueWhite = 0xFAEBD7,
    Aqua = 0x00FFFF,
    Aquamarine = 0x7FFFD4,
    Azure = 0xF0FFFF,  ///Repeat 140 times
    ...
}

public static Color colorFromCode(ColorCode code){
 ....
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 10

你可以在枚举上写一个扩展方法:

public static Color ToColor(this ColorCode colorCode)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后你可以:

Color tmp = ColorCode.Aqua.ToColor();
Run Code Online (Sandbox Code Playgroud)

它不是一个隐含的转换,但它可以像你可能获得的那样可读.