枚举处理类

    public class EnumHelper
    {
        public static T GetEnumByDescription<T>(string description)
        {
            if (!string.IsNullOrEmpty(description))
            {
                Type enumType = typeof(T);
                EnumItemCollection enumItems = GetEnumItems(enumType);
                foreach (EnumItem item in enumItems)
                {
                    if (item.Description.ToString().ToLower() == description.Trim().ToLower()) return (T) Enum.ToObject(typeof(T), item.Value);
                }
            }
            return default(T);
        }

        public static T GetEnumByKey<T>(string key)
        {
            return GetEnumByKey<T>(key, default(T));
        }

        public static T GetEnumByKey<T>(string key, T defaultValue)
        {
            T local = defaultValue;
            EnumItem enumItem = null;
            try
            {
                Type enumType = typeof(T);
                EnumItemsCache.Get(enumType).TryGet(key, out enumItem);
                if (enumItem != null) local = (T) Enum.ToObject(enumType, enumItem.Value);
            }
            catch
            {
                local = defaultValue;
            }
            return local;
        }

        public static T GetEnumByValue<T>(int value)
        {
            return GetEnumByValue<T>(value, default(T));
        }

        public static T GetEnumByValue<T>(string value)
        {
            return GetEnumByValue<T>(value, default(T));
        }

        public static T GetEnumByValue<T>(int value, T defaultValue)
        {
            T local = defaultValue;
            try
            {
                EnumItemCollection enumItems = GetEnumItems(typeof(T));
                foreach (EnumItem item in enumItems)
                {
                    if (item.Value == value) local = (T) Enum.ToObject(typeof(T), item.Value);
                }
            }
            catch
            {
                local = defaultValue;
            }
            return local;
        }

        public static T GetEnumByValue<T>(string value, T defaultValue)
        {
            T local = defaultValue;
            try
            {
                EnumItemCollection enumItems = GetEnumItems(typeof(T));
                foreach (EnumItem item in enumItems)
                {
                    if (item.Value.ToString() == value) local = (T) Enum.ToObject(typeof(T), item.Value);
                }
            }
            catch
            {
                local = defaultValue;
            }
            return local;
        }

        public static string GetEnumDescription(Enum enumField)
        {
            return GetEnumItem(enumField).Description;
        }

        public static EnumItem GetEnumItem<T>(T enumField)
        {
            return GetEnumItems(typeof(T))[enumField.ToString()];
        }

        public static EnumItem GetEnumItem(Enum enumField)
        {
            return GetEnumItems(enumField.GetType())[enumField.ToString()];
        }

        public static EnumItemCollection GetEnumItems(Type enumType)
        {
            return EnumItemsCache.Get(enumType);
        }

        public static T GetEnumObject<T>(string text)
        {
            return (T) Enum.Parse(typeof(T), text, true);
        }
    }

  

posted @ 2012-12-06 20:20  Care健康  阅读(384)  评论(0编辑  收藏  举报
版权
作者:Bober Song

出处:http://bober.cnblogs.com

Care健康:http://www.aicareyou.com

推荐空间:华夏名网

本文首发博客园,版权归作者跟博客园共有。

转载必须保留本段声明,并在页面显著位置给出本文链接,否则保留追究法律责任的权利。