为枚举类型添加说明 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}\t\t说明:{1}",s.ToString(),s.GetDescription());
            }
        }        
    }

 

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

 

posted on 2013-08-16 09:35  武胜-阿伟  阅读(199)  评论(0编辑  收藏  举报