如何在C#中的枚举结构内将双精度型转换为字符串

js_55

这些工作都不行:

 public enum OsVersioniOS : int
 { 
    '8.0' = 1 << 0,
    "8.1" = 1 << 1,
    string(8.2) = 1 << 2,
 }

我希望8.0 [这是iOS操作系统的类型]被视为枚举内的字符串。

斯科特·张伯伦

无法做到这一点,枚举必须根据C#语言规范的小节标识符(C#5.0版本中的2.4.2小节)具有有效的标识符,您能做的最好的事情是使用DisplayAttribute可能会或可能不会被使用的会自动根据您用来向用户显示信息的框架而定。

public enum OsVersioniOS : int
{ 
    [Display(ShortName="8.0")]
    v8_0 = 1 << 0,
    [Display(ShortName="8.1")]
    v8_1 = 1 << 1,
    [Display(ShortName="8.2")]
    v8_2 = 1 << 2,
}

这是一个辅助扩展方法,如果您使用的框架不会自动提取ShortName,则可以将枚举转换为字符串描述。

/// <summary>
/// Gets the text from the <see cref="DisplayAttribute"/> ShortName associated with the enum member.
/// </summary>
/// <param name="value">The enum value to check.</param>
/// <returns>The value of the Display - ShortName attribute or null if not available.</returns>
public static string GetShortName(this Enum enumValue)
{
    return enumValue.GetType()
                    .GetMember(enumValue.ToString())
                    .First()
                    .GetCustomAttribute<DisplayAttribute>()
                    .GetShortName();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章