我想使用一个对象(由框架返回,而不是我的控件),myField
,其属性DisplayFormat
的类型为枚举SPNumberFormatTypes
。
我想将DisplayFormat的整数值作为字符串分配给XmlAttribute
。以下是我目前的工作:
myAttribute.Value = ((Int32)((SPNumberFormatTypes)field.DisplayFormat)).ToString();
实现这一目标的另一种可能方法是:
myAttribute.Value = ((Int32)Enum.Parse(typeof(SPNumberFormatTypes), field.DisplayFormat.ToString())).ToString();
我想知道是否有更简单/更清洁的方法来实现这一目标?
答案 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
的每位成员,请说Foo
,SPNumberFormatType.Foo
是格式类型,而不是格式类型。这就是它应该是单数的原因。但是,如果SPNumberFormatTypes
被标记为Flags
,那么您很好,复数是标准的,但您应该将DisplayFormat
重命名为DisplayFormats
。
以下是来自MSDN的naming guidelines。
答案 1 :(得分:1)
@ itowlson的评论是正确答案。由于枚举已经是SPNumberFormatTypes类型,因此无需将其强制转换为该类型。因此,通过这样做可以更容易地实现我的目标:
((Int32)(field.DisplayFormat)).ToString();
谢谢@itowlson!
答案 2 :(得分:0)