推荐的枚举写法

2014-07-12 10:55:44  访问(2942) 赞(0) 踩(0)


using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Reflection;

namespace SlowX.WebKnowledge.Enums
{

    /// <summary>
    /// 用户角色
    /// </summary>
    [Serializable]
    public class UserRole
    {

        #region 枚举 显示表达式

        /// <summary>
        /// 显示表达式
        /// </summary>
        public enum EmShowExpress
        {
            
            /// <summary>
            /// 默认
            /// </summary>
            默认 = 1
        }

        #endregion 枚举 显示表达式

        #region Enum

        /// <summary>
        /// 用户角色
        /// </summary>
        public enum EmUserRole
        {

            /// <summary>
            /// 管理员
            /// </summary>
            管理员 = 1,
            /// <summary>
            /// 总经理
            /// </summary>
            总经理 = 2,
            /// <summary>
            /// 部门领导
            /// </summary>
            部门领导 = 4,
            /// <summary>
            /// 普通职员
            /// </summary>
            普通职员 = 8
        }

        #endregion Enum

        /// <summary>
        /// 构造函数
        /// </summary>
        public UserRole()
        {

        }

        /// <summary>
        /// 数组
        /// </summary>
        public readonly static EmUserRole[] EmArray = new EmUserRole[]
        {
            EmUserRole.管理员,
            EmUserRole.总经理,
            EmUserRole.部门领导,
            EmUserRole.普通职员
        };


        /// <summary>
        /// typeof(UserRole) 当前UserRole的type值
        /// </summary>
        public readonly static Type curType = typeof(UserRole);

        /// <summary>
        /// typeof(UserRole).FullName 
        /// </summary>
        public readonly static string curTypeFullName = curType.FullName;


        /// <summary>
        /// typeof(EmUserRole) 当前枚举EmUserRole的type值
        /// </summary>
        public readonly static Type curEnumType = typeof(EmUserRole);

        /// <summary>
        /// typeof(EmUserRole).FullName
        /// </summary>
        public readonly static string curEnumTypeFullName = curEnumType.FullName;


        /// <summary>
        /// 默认的枚举值
        /// </summary>
        public static readonly EmUserRole defaultEm = EmUserRole.管理员;

        /// <summary>
        /// 默认的枚举值
        /// </summary>
        private static Dictionary<EmShowExpress, DataTable> dictionaryDataTableValue = CreateDataTable();

        /// <summary>
        /// 获得Text的数组
        /// </summary>
        /// <returns></returns>
        public static string[] GetTextArray()
        {
            EmUserRole[] emA = EmArray;
            int iLen = emA.Length;
            string[] theResult = new string[iLen];

            for (int i = 0; i < iLen; ++i)
            {
                theResult[i] = emA[i].ToString();
            }

            return theResult;
        }

        /// <summary>
        /// 获得显示名称
        /// </summary>
        /// <param name="em"></param>
        /// <returns></returns>
        public static string GetShowName
            (
                EmUserRole em
            )
        {
            return em.ToString();
        }


        /// <summary>
        /// 
        /// </summary>
        /// <param name="em"></param>
        /// <param name="curEmShowExpress"></param>
        /// <returns></returns>
        public static string GetShowName
            (
                EmUserRole em,
                EmShowExpress curEmShowExpress
            )
        {
   
                return em.ToString();

        }


        /// <summary>
        /// 创建数据表
        /// </summary>
        /// <returns></returns>
        private static Dictionary<EmShowExpress, DataTable> CreateDataTable()
        {
            Dictionary<EmShowExpress, DataTable> theResult = new Dictionary<EmShowExpress, DataTable>();

            theResult.Add(EmShowExpress.默认, CreateDataTableByEmShowExpress(EmShowExpress.默认));


            return theResult;
        }

        /// <summary>
        /// 创建数据表
        /// </summary>
        /// <param name="curEmShowExpress"></param>
        /// <returns></returns>
        private static DataTable CreateDataTableByEmShowExpress(EmShowExpress curEmShowExpress)
        {
            DataTable dt = new DataTable();

            dt.Columns.Add("ID", typeof(int));
            dt.Columns.Add("TheName");

            EmUserRole[] emA = EmArray;

            DataRow dr = null;

            foreach (EmUserRole em in emA)
            {
                dr = dt.NewRow();

                dt.Rows.Add(dr);

                dr["ID"] = (int)em;
                dr["TheName"] = GetShowName(em, curEmShowExpress);
            }

            return dt;
        }

        /// <summary>
        /// 获得DataTable
        /// </summary>
        /// <returns></returns>
        public static DataTable ReturnDataTable()
        {
            return dictionaryDataTableValue[EmShowExpress.默认];
        }

        /// <summary>
        /// 获得DataTable
        /// </summary>
        /// <returns></returns>
        public static DataTable GetDataTable()
        {
            return dictionaryDataTableValue[EmShowExpress.默认];
        }

        /// <summary>
        /// 获得DataTable
        /// </summary>
        /// <param name="curEmShowExpress"></param>
        /// <returns></returns>
        public static DataTable GetDataTable(EmShowExpress curEmShowExpress)
        {
            return dictionaryDataTableValue[curEmShowExpress];
        }

        /// <summary>
        /// 获得数据集
        /// </summary>
        /// <param name="fromCache"></param>
        /// <returns></returns>
        public static DataTable GetDataTable(bool fromCache)
        {
            if (fromCache)
                return dictionaryDataTableValue[EmShowExpress.默认];
            else
                return CreateDataTableByEmShowExpress(EmShowExpress.默认);
        }


        /// <summary>
        /// 获得数据集
        /// </summary>
        /// <param name="curEmShowExpress"></param>
        /// <param name="fromCache"></param>
        /// <returns></returns>
        public static DataTable GetDataTable(EmShowExpress curEmShowExpress,bool fromCache)
        {
            if (fromCache)
                return dictionaryDataTableValue[curEmShowExpress];
            else
                return CreateDataTableByEmShowExpress(curEmShowExpress);
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetEmByInt(int theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (int)em)
                    return em;
            }

            MethodBase methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue = " + theValue.ToString() + "没有找到对应的枚举值。");
        }


        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetEmByLong(long theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (long)em)
                    return em;
            }

            MethodBase methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue = " + theValue.ToString() + "没有找到对应的枚举值。");
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetEmByString(string theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == ((int)em).ToString())
                    return em;
            }

            MethodBase methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue = " + theValue.ToString() + "没有找到对应的枚举值。");

        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetEmByObj(object theValue)
        {
            MethodBase methodBaseValue = null;

            if (theValue == null)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue为null,没有找到对应的枚举值。");
            }

            if (theValue is EmUserRole)
                return (EmUserRole)theValue;

            string strValue = theValue.ToString();

            if (strValue.Length == 0)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue为空,没有找到对应的枚举值。");
            }


            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (strValue == ((int)em).ToString())
                    return em;
            }

            methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue = " + strValue.ToString() + "没有找到对应的枚举值。");
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByInt(int theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (int)em)
                    return em;
            }

            return defaultEm;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByLong(long theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (long)em)
                    return em;
            }

            return defaultEm;
        }


        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByString(string theValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == ((int)em).ToString())
                    return em;
            }

            return defaultEm;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByObj(object theValue)
        {
            if (theValue == null)
                return defaultEm;

            if (theValue is EmUserRole)
                return (EmUserRole)theValue;

            string strValue = theValue.ToString();

            if (strValue.Length == 0)
                return defaultEm;

            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (strValue == ((int)em).ToString())
                    return em;
            }

            return defaultEm;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByInt(int theValue, EmUserRole defaultValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (int)em)
                    return em;
            }

            return defaultValue;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByLong(long theValue, EmUserRole defaultValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == (long)em)
                    return em;
            }

            return defaultValue;
        }


        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByString(string theValue, EmUserRole defaultValue)
        {
            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theValue == ((int)em).ToString())
                    return em;
            }

            return defaultValue;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByObj(object theValue, EmUserRole defaultValue)
        {
            if (theValue == null)
                return defaultValue;

            string strValue = theValue.ToString();

            if (strValue.Length == 0)
                return defaultValue;

            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (strValue == ((int)em).ToString())
                    return em;
            }

            return defaultValue;
        }

        /// <summary>
        /// 获得 Text 获得 EmUserRole 
        /// </summary>
        /// <param name="theText"></param>
        /// <returns></returns>
        public static EmUserRole GetEmByText(string theText)
        {
            MethodBase methodBaseValue = null;

            if (theText == null)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theText为null,没有找到对应的枚举值。");
            }

            if (theText.Length == 0)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theText为空,没有找到对应的枚举值。");
            }

            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theText == (em).ToString())
                    return em;
            }

            methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theText = " + theText.ToString() + "没有找到对应的枚举值。");
        }


        /// <summary>
        /// 获得 Text 获得 EmUserRole 
        /// </summary>
        /// <param name="theText"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByText(string theText, EmUserRole defaultValue)
        {
            if (theText == null)
                return defaultValue;

            if (theText.Length == 0)
                return defaultValue;

            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (theText == (em).ToString())
                    return em;
            }

            return defaultValue;
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param> 
        /// <returns></returns>
        public static EmUserRole GetEmByAllObj(object theValue)
        {
            MethodBase methodBaseValue = null;

            if (theValue == null)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue为null,没有找到对应的枚举值。");
            }

            if (theValue is EmUserRole)
                return (EmUserRole)theValue;

            string strValue = theValue.ToString();

            if (strValue.Length == 0)
            {
                methodBaseValue = MethodBase.GetCurrentMethod();

                throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue为空,没有找到对应的枚举值。");
            }


            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (strValue == ((int)em).ToString() || strValue == em.ToString())
                    return em;
            }

            methodBaseValue = MethodBase.GetCurrentMethod();

            throw new Exception("Method :==> " + methodBaseValue.ReflectedType.FullName + " ~ " + methodBaseValue.ToString() + " Exception :==> " + "theValue = " + strValue.ToString() + "没有找到对应的枚举值。");
        
        }

        /// <summary>
        /// 获得枚举
        /// </summary>
        /// <param name="theValue"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static EmUserRole GetDefaultEmByAllObj(object theValue, EmUserRole defaultValue)
        {
            if (theValue == null)
                return defaultValue;

            string strValue = theValue.ToString();

            if (strValue.Length == 0)
                return defaultValue;

            EmUserRole[] emA = EmArray;

            foreach (EmUserRole em in emA)
            {
                if (strValue == ((int)em).ToString() || strValue == em.ToString())
                    return em;
            }

            return defaultValue;
        }

    }

        
}



枚举代码生成工具
定义推荐枚举的写法,用于后续的枚举操作示例,和上面的枚举样例做比对。
标签:枚举    枚举样例    定义枚举    例子 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)
 
  ┈全部┈  
 
(显示默认分类)