更清洁的方式来演绎C#枚举

时间:2010-02-03 02:42:23

标签: c# enums casting

我想使用一个对象(由框架返回,而不是我的控件),myField,其属性DisplayFormat的类型为枚举SPNumberFormatTypes

我想将DisplayFormat的整数值作为字符串分配给XmlAttribute。以下是我目前的工作:

myAttribute.Value = ((Int32)((SPNumberFormatTypes)field.DisplayFormat)).ToString();

实现这一目标的另一种可能方法是:

myAttribute.Value = ((Int32)Enum.Parse(typeof(SPNumberFormatTypes), field.DisplayFormat.ToString())).ToString();

我想知道是否有更简单/更清洁的方法来实现这一目标?

3 个答案:

答案 0 :(得分:1)

是的,重构你的扩展方法,比如ValueToString

public static string ValueToString(this SPNumberFormatTypes format) {
    int value = (int)format;
    return format.ToString();
}

用法:

// format is SPNumberFormatType
Console.WriteLine(format.ValueToString());

此外,enum的名称应为单数SPNumberFormatType。对于enum的每位成员,请说FooSPNumberFormatType.Foo是格式类型,而不是格式类型。这就是它应该是单数的原因。但是,如果SPNumberFormatTypes被标记为Flags,那么您很好,复数是标准的,但您应该将DisplayFormat重命名为DisplayFormats

以下是来自MSDN的naming guidelines

答案 1 :(得分:1)

@ itowlson的评论是正确答案。由于枚举已经是SPNumberFormatTypes类型,因此无需将其强制转换为该类型。因此,通过这样做可以更容易地实现我的目标:

((Int32)(field.DisplayFormat)).ToString();

谢谢@itowlson!

答案 2 :(得分:0)

相关问题