阳仔博客

阳仔

C# - 将enum类型映射到字符串上

有以下一个枚举类型:

    public enum MyColors
    {
        [StringValue("red")]     red,
        [StringValue("blue")]    blue,
        [StringValue("green")]   green,
        [StringValue("yellow")]  yellow,
        [StringValue("block")]   block
    }

我想输出MyColors.red是“red”。
定义StringValue为一个类,继承自System.Attribute

    public class StringValue : System.Attribute
    {
        private string _value;

        public StringValue (string value)
        {  
            _value = value;  
        }

        public string Value {  
            get { return _value; }  
        }
    }

定义静态类StringEnum

    public static class StringEnum
    {
        public static string GetStringValue (System.Enum value)
        {
            string output = null;  
            System.Type type = value.GetType ();  
            System.Reflection.FieldInfo fi = type.GetField (value.ToString ());  
            StringValue[] attrs = fi.GetCustomAttributes (typeof(StringValue), false) as StringValue[];  
            if (attrs.Length > 0) {  
                output = attrs [0].Value;  
            }  
            return output;  
        }
    }

使用StringEnum.GetStringValue(System.Enum value)方法调用,
写一段测试代码:

    public class EmptyClass
    {
        static void Main(string[] args)
        {
            Console.WriteLine (StringEnum.GetStringValue (MyColors.red));
            Console.WriteLine (StringEnum.GetStringValue (MyColors.blue));
            Console.WriteLine (StringEnum.GetStringValue (MyColors.green));
            Console.WriteLine (StringEnum.GetStringValue (MyColors.yellow));
            Console.WriteLine (StringEnum.GetStringValue (MyColors.block));
        }
    }

输出结果是:
这里写图片描述
完美解决将enum类型映射到字符串上这个问题。
由于GetStringValue(System.Enum value)方法使用的是父类System.Enum,所有定义的Enum都可以同时调用这个方法,实现代码共享,不用写多个GetStringValue方法了。

阅读更多
版权声明:阳仔原创,转载请注明出处。 https://blog.csdn.net/honey199396/article/details/52382676
文章标签: enum c# string
个人分类: C#
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

C# - 将enum类型映射到字符串上

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭