使用枚举从类c中检索const值#

cha*_*nti 0 c# enums

我有一个像枚举

public enum DecimailPrecision
        {
            One,
            Two,
        }
Run Code Online (Sandbox Code Playgroud)

和班级一样

class DecimailPrecision1
        {
            public const string One = "#,##0.0";
            public const string Two = "#,##0.00";
        }
Run Code Online (Sandbox Code Playgroud)

我想用枚举从类中检索const字符串.我已经使用if和切换为

 string format = string.Empty;
switch (value)
{
case DecimailPrecision.One:
     format = DecimailPrecision1.One.ToString(); break;
case DecimailPrecision.Two:
     format = DecimailPrecision1.Two.ToString(); break;
default:
     format = DecimailPrecision1.Two.ToString(); break;
}

if (value == "One"){
   format = DecimailPrecision1.One.ToString();}
else if (value == "Two"){
   format = DecimailPrecision1.Two.ToString();}
}
Run Code Online (Sandbox Code Playgroud)

我需要一个更好的方法因为我在枚举中有很多项目.

谢谢.

Dan*_*ley 5

为什么不创建一个Dictionary<DecimailPrecision, string>并保留映射?

这样你就可以DecimailPrecision在字典中查找你的值并检索适当映射的字符串.

您甚至可以将映射存储在config中并从中读取,因此您无需重新编译代码即可添加新映射.

要明确地将其应用于您的代码(我建议您将consts 的名称更改为DecimalPrecisionFormat):

var precisionMap = new Dictionary<DecimailPrecision, string> 
{ 
    { DecimailPrecision.One, DecimailPrecision1.One }
  , { DecimailPrecision.Two, DecimailPrecision1.Two } 
};

var formatTwo = precisionMap[DecimailPrecision.Two];
Run Code Online (Sandbox Code Playgroud)