二、枚举扩展方法_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 二、枚举扩展方法

二、枚举扩展方法

 2013/12/16 18:09:03  泷泷  博客园  我要评论(0)
  • 摘要:前言枚举也是在开发过程中经常要用到的一种数据类型。那么,下面就对枚举的一些扩展方法进行介绍。第一、提出疑问。先定义一个枚举,代码如下:publicenumPhoneEnum{[Description("安卓")]Android=111,[Description("苹果")]Ios=100,}1、页面需要一个下拉,显示枚举的项,该怎么办?2、页面需要一个下拉,显示枚举的描述,该怎么办?3、从一个项中,显示枚举的描述,该怎么办?4、把枚举中的项,处理成列表List,该怎么办?5
  • 标签:方法 枚举

前言

枚举也是在开发过程中经常要用到的一种数据类型。那么,下面就对枚举的一些扩展方法进行介绍。

第一、提出疑问。

先定义一个枚举,代码如下:

public enum PhoneEnum
    {
        [Description("安卓")]
        Android=111,
        [Description("苹果")]
        Ios=100,
    }

1、页面需要一个下拉,显示枚举的项,该怎么办?

2、页面需要一个下拉,显示枚举的描述,该怎么办?

3、从一个项中,显示枚举的描述,该怎么办?

4、把枚举中的项,处理成列表List,该怎么办?

5、枚举的项转换成字典Dictionary,该怎么办?

6、枚举的描述转换成字典Dictionary,该怎么办?

第二、有了上面的问题,下面就一一实现吧!

第一个问题的扩展方法,代码如下:

 public static List<SelectListItem> ToListItem<T>()
        {
            List<SelectListItem> li = new List<SelectListItem>();
            foreach (int s in Enum.GetValues(typeof(T)))
            {
                li.Add(new SelectListItem
                {
                    Value = s.ToString(),
                    Text = Enum.GetName(typeof(T), s)
                }
                );
            }
            return li;
        }

实现代码如下:

ViewData["enum"] = ExtendHelper.ToListItem<PhoneEnum>();

 

第二个问题的扩展方法,代码如下:

public static List<SelectListItem> ToListDescription(this Enum eEnum)
        {
            var list = (from Enum d in Enum.GetValues(eEnum.GetType())
                        select new SelectListItem
                                   {
                                       Value =
                                           ((int) Enum.Parse(eEnum.GetType(), Enum.GetName(eEnum.GetType(), d))).
                                           ToString(),
                                       Text = d.ToDescriptionName() //第二个问题的实现,需要第三个问题的扩展方法的支持
                                   }).ToList();
            
            return list;
        }

实现代码如下:

ViewData["enumDistion"] = ExtendHelper.ToListDescription(PhoneEnum.Ios);(PhoneEnum.Ios是枚举中随便一个项,扩展方法中会根据这个项找到这个枚举,然后全部列出)

 

第三个问题的扩展方法,代码如下:

 public static string ToDescriptionName(this Enum eEnum)
        {
            var type = eEnum.GetType();
            var menInfo = type.GetMember(eEnum.ToString());
            if (menInfo.Length > 0)
            {
                var attrs = menInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (attrs.Length > 0)
                {
                    return ((DescriptionAttribute)attrs[0]).Description;
                }
            }
            return eEnum.ToString();
        }

实现代码如下:

ViewData["enumDis"] = PhoneEnum.Ios.ToDescriptionName();

 

发表评论
用户名: 匿名