900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 枚举类型转换成字符串

枚举类型转换成字符串

时间:2023-11-25 09:38:57

相关推荐

枚举类型转换成字符串

使用枚举类型默认的ToString()方法,往往不能得到我们想要的输出的字符串。

如何方便的定义枚举类型中的每个值代表的字符串输出呢?

可以使用DescriptionAttribute, 写上想得到的字符串输出。

enum Direction{[Description("Rover is facing to UP (Negtive Y)")]UP = 1,[Description("Rover is facing to DOWN (Positive Y)")]DOWN = 2,[Description("Rover is facing to RIGHT (Positive X)")]RIGHT = 3,[Description("Rover is facing to LEFT (Negtive X)")]LEFT = 4};

使用下面的方法,来得到对应项的字符串。

/// <summary>/// Contains methods for working with <see cref="Enum"/>./// </summary>public static class EnumHelper{/// <summary>/// Gets the specified enum value's description./// </summary>/// <param name="value">The enum value.</param>/// <returns>The description or <c>null</c>/// if enum value doesn't have <see cref="DescriptionAttribute"/>.</returns>public static string GetDescription(this Enum value){var fieldInfo = value.GetType().GetField(value.ToString());var attributes = (DescriptionAttribute[])fieldInfo.GetCustomAttributes(typeof(DescriptionAttribute),false);return attributes.Length > 0? attributes[0].Description: null;}/// <summary>/// Gets the enum value by description./// </summary>/// <typeparam name="EnumType">The enum type.</typeparam>/// <param name="description">The description.</param>/// <returns>The enum value.</returns>public static EnumType GetValueByDescription<EnumType>(string description){var type = typeof(EnumType);if (!type.IsEnum)throw new ArgumentException("This method is destinated for enum types only.");foreach (var enumName in Enum.GetNames(type)){var enumValue = Enum.Parse(type, enumName);if (description == ((Enum)enumValue).GetDescription())return (EnumType)enumValue;}throw new ArgumentException("There is no value with this description among specified enum type values.");}}

进一步了解.net中的Attribue

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。