枚举类型转换成字符串

摘要:
使用枚举类型默认的ToString()方法,往往不能得到我们想要的输出的字符串。如何方便的定义枚举类型中的每个值代表的字符串输出呢?enumDirection{[Description]UP=1,[Description]DOWN=2,[Description]RIGHT=3,[Description]LEFT=4};使用下面的方法,来得到对应项的字符串。

使用枚举类型默认的ToString()方法,往往不能得到我们想要的输出的字符串。
如何方便的定义枚举类型中的每个值代表的字符串输出呢?
可以使用DescriptionAttribute, 写上想得到的字符串输出。

enumDirection
{
    [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 classEnumHelper
    {
        /// <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(thisEnum 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>(stringdescription)
        {
            var type = typeof(EnumType);
            if (!type.IsEnum)
                throw new ArgumentException("This method is destinated for enum types only.");
            foreach (var enumName inEnum.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

免责声明:文章转载自《枚举类型转换成字符串》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js获取7天之前的日期或者7天之后的日期Docker下安装Sqlserver(mssql)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

greenplum(postgresql) 数据字典

greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的。我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家。在这里不会详细介绍每个字典的内容,只会介绍常见的应用以及一些已经封装好了的函数。具体的介绍大家可以去看postgresql的中文文档(附件),里面有详细的解释。 1.postgresql中,所有数据库的...

深入理解Enum(枚举类)

Java 枚举 为什么要引入枚举类 一个小案例 你写了一个小程序,不过好久不用了,突然有一天,你想使用一下它。程序要想正确运行,需要将今天星期几存到数据库里。这个时候,你开始犯难了。 当初的你还很年轻,不懂程序界的险恶,设计这个程序的时候,傻不拉几把这个字段设计为int类型的,用0代表周日,1代表周一。。。6代表周六,添加的时候就setWeekday(0)...

介绍 C# 中的运算符重载 .

介绍 C# 中的运算符重载周融,2007 年 5 月(C) 2001-2007 保留所有权利。 重载是面向对象中的一个重要概念,它是对象多态性的一种不完全体现,人们通常所说的重载,往往指的是函数的重载。本文向读者介绍一种新的重载模型——运算符重载。 在本文中的内容:1、为什么需要运算符重载2、C# 运算符重载决策示例3、C# 运算符重载一览表4、结论 为什...

Java枚举类型的理解及在后台响应中的使用

在前后台分离开发过程中,统一响应的格式可以使用枚举类型进行规范开发,对于不同的错误/异常类型可以响应不同的状态码和响应信息。 1,枚举类型的简单理解:枚举类型就是包含了已经创建好对象的final类,这个final类的开始是一些枚举变量,枚举变量可以有多个值,这些参数被赋给了枚举对象, 枚举对象可以通过枚举类调用枚举变量获取。 总结以下几点: 1)枚举类型不...

Java switch 枚举

Switch中能够使用int。byte。short,char,Enum,String。当中Enum为1.5之后新增特性,String为java8新增特性。本文介绍怎样在Switch中使用Enum类型。 在swtich中使用enum。不同于传统switch的地方主要在两个显著的、非细节方面。 案例: switch (UserAgent.FIREFOX)...

java 枚举类型enum 的使用

java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static类型来定义呢?以前我们都是采用这种方式定义的,很少采用enum定义,所以也都没有注意过,面对突入起来的问题,还真有点不太清楚为什么有这样的定义。既然不明白就抽时间研究下吧。 Java中的枚...