zoukankan      html  css  js  c++  java
  • C#扩展枚举的别名

    C#扩展枚举的别名
    用途:
    1. 提高代码的可读性.
    2. 打印到日志系统,方便于调试.
    代码:
    1. 首先编写一个Attribute
    [AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field, AllowMultiple = false, Inherited = false)]
        public class MemberStrAttribute : Attribute
        {
            public MemberStrAttribute(string str)
            {
                MemberStr = str;
            }
    
            public string MemberStr { get; private set; }
        }
    
    1. 为枚举扩展一个方法来获取自定义属性的特定值
        public static class EnumExtend
        {
            public static string MemberStr(this Enum value)
            {
                FieldInfo fi = value.GetType().GetField(value.ToString());
                MemberStrAttribute[] attrs =
                    fi.GetCustomAttributes(typeof(MemberStrAttribute), false) as MemberStrAttribute[];
                if (attrs.Length > 0) return attrs[0].MemberStr;
    
                return value.ToString();
            }
        }
    
    1. 使用例程和输出
    public enum Test
    {
        [MemberStr("男的")]
        A,
        [MemberStr("女的")]
        B,
        [MemberStr("不男不女的")]
        C
    }
    
    Test test = Test.A;
    Console.WriteLine(test.MemberStr());
    test = Test.B;
    Console.WriteLine(test.MemberStr());
    test = Test.C;
    Console.WriteLine(test.MemberStr());
    
    男的
    女的
    不男不女的
    
  • 相关阅读:
    CF869E The Untended Antiquity 解题报告
    Walk 解题报告
    CF911F Tree Destruction 解题报告
    P4397 [JLOI2014]聪明的燕姿
    洛谷 P2329 [SCOI2005]栅栏 解题报告
    洛谷 P3747 [六省联考2017]相逢是问候 解题报告
    set-erase
    set-empty
    set-empty
    set-end
  • 原文地址:https://www.cnblogs.com/linxmouse/p/11102272.html
Copyright © 2011-2022 走看看