zoukankan      html  css  js  c++  java
  • 枚举处理类

        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);
            }
        }
    

      

  • 相关阅读:
    ThinkPHP实现定时任务
    VUE 父子组件之间通信传值 props和 $emit,事件触发传值ref,以及兄弟组件之间的通信传值 eventBus
    JS链接转换为二维码
    VUE 动态切换列表active样式
    微信内置浏览器video标签自动全屏的问题
    JS监听video视频播放时间
    JS数据统计表 highcharts.js的运用
    JS 自动返回每个月的天数
    JS 一键复制插件应用 和 原生实现
    JS enter键一键登录
  • 原文地址:https://www.cnblogs.com/bober/p/2805934.html
Copyright © 2011-2022 走看看