zoukankan      html  css  js  c++  java
  • 为枚举类型添加说明 zt

    enum Orientation
            {
                [DescriptionAttribute("")]
                East,
                [DescriptionAttribute("")]
                South,
                [DescriptionAttribute("西")]
                West,
                [DescriptionAttribute("")]
                North
            }

    但又如何获取DescriptionAttribute的内容呢?呵呵,答案就是通过反射。下面是我封装获取DescriptionAttribute内容的扩展方法。

    static string GetDescription<T>(this T value)
            {
                var memInfo = value.GetType().GetMember(value.ToString());
                var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>();
                if (attributes.Any())
                    return attributes.First().Description;
                return string.Empty;
            }

    下面就是测试的代码以及测试结果

    static class Program
        {
            enum Orientation
            {
                [DescriptionAttribute("")]
                East,
                [DescriptionAttribute("")]
                South,
                [DescriptionAttribute("西")]
                West,
                [DescriptionAttribute("")]
                North
            }
            static string GetDescription<T>(this T value)
            {
                var memInfo = value.GetType().GetMember(value.ToString());
                var attributes = memInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>();
                if (attributes.Any())
                    return attributes.First().Description;
                return string.Empty;
            }
            static void Main()
            {
                foreach (var s in Enum.GetValues(typeof(Orientation)))
                {
                    Console.WriteLine("值:{0}		说明:{1}",s.ToString(),s.GetDescription());
                }
            }        
        }

    从输出可以看出,程序成功的获取了枚举值的说明内容,这样就可以利用这种模式方便的对枚举值添加中文说明,然后在需要的时候提取出来,如:需要做数据绑定的时候。

  • 相关阅读:
    Microsoft.NET User Group
    白话MVP 和 MVVM 【转】
    高效的二分法TOP MAX/TOP MIN分页存贮过程
    策略模式5
    说说我们项目组的例行会议
    合格的项目经理
    说说我们的招聘和面试
    web安全问题汇总
    ASP.NET中常用的优化性能方法
    说说我们安排的培训
  • 原文地址:https://www.cnblogs.com/zeroone/p/3261345.html
Copyright © 2011-2022 走看看