c#中 Enum類型定義與獲取值或描述方法

這裏定義一個枚舉如下:

 

        /// <summary>
        
/// 用戶狀態枚舉
        
/// </summary>

        [Flags]
        
public enum UserFlag
        
{
            [Description(
"啓用")]
            UnForbidden 
= 1,
            [Description(
"禁用")]
            Forbidden 
= 2,
            [Description(
"刪除")]
            Deleted 
= 4
        }

下面定義兩個枚舉類型操作函數:

 


        
/// <summary>
        
/// 根據枚舉類型返回類型中的所有值,文本及描述
        
/// </summary>
        
/// <param name="type"></param>
        
/// <returns>返回三列數組,第0列爲Description,第1列爲Value,第2列爲Text</returns>

        public static List<string[]> GetEnumOpt(Type type)
        
{
            List
<string[]> Strs = new List<string[]>();
            FieldInfo[] fields 
= type.GetFields();
            
for (int i = 1, count = fields.Length; i < count; i++)
            
{
                
string[] strEnum = new string[3];
                FieldInfo field 
= fields[i];
                
//值列
                strEnum[1= ((int)Enum.Parse(type, field.Name)).ToString();
                
//文本列賦值
                strEnum[2= field.Name;

                
object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
                
if (objs == null || objs.Length == 0)
                
{
                    strEnum[
0= field.Name;
                }

                
else
                
{
                    DescriptionAttribute da 
= (DescriptionAttribute)objs[0];
                    strEnum[
0= da.Description;
                }


                Strs.Add(strEnum);
            }

            
return Strs;
        }


        
/// <summary>
        
/// 獲取枚舉類子項描述信息
        
/// </summary>
        
/// <param name="enumSubitem">枚舉類子項</param>        

        public static string GetEnumDescription(object enumSubitem)
        
{
            enumSubitem
=(Enum)enumSubitem;
            
string strValue = enumSubitem.ToString();

            FieldInfo fieldinfo 
= enumSubitem.GetType().GetField(strValue);

            
if (fieldinfo != null)
            
{

                Object[] objs 
= fieldinfo.GetCustomAttributes(typeof(DescriptionAttribute), false);

                
if (objs == null || objs.Length == 0)
                
{
                    
return strValue;
                }

                
else
                
{
                    DescriptionAttribute da 
= (DescriptionAttribute)objs[0];
                    
return da.Description;
                }

            }

            
else
            
{
                
return "不限";
            }


        }

其中  public static List<string[]> GetEnumOpt(Type type) 函數爲獲取一個枚舉類型所有選項並添加到List<string[]>中,爲前臺控件綁定提供數據源,前臺示例代碼如下:

            List<string[]> strEnums = EnumDefine.GetEnumOpt(typeof(EnumDefine.UserFlag));
            foreach (string[] strEnum in strEnums)
            {
                ddlUserType.Items.Add(new ListItem(strEnum[0], strEnum[1]));
            }

而  public static string GetEnumDescription(object enumSubitem)函數則爲獲取某一項文字描述信息項函數,前臺可以通過調用該類型值,獲取該類型的文字描述,示例代碼如下:

EnumDefine.GetEnumDescription(UserFlag.UnForbidden)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章