using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Reflection;
using System.Web;
namespace Common
{
//得到enum值描述列表
//得到enum字段描述列表
//由枚举值得到枚举描述
//由枚举描述得到枚举值
//绑定枚举的描述列表-客户端控件 【dropdownlist】
//绑定枚举的描述列表并选中相应结果
/// <summary>
/// 枚举类
/// </summary>
public class PublicEnum
{
#region 基本数据公用状态
/// <summary>
/// 基本数据公用状态
/// </summary>
public enum PublicStatus
{
/// <summary>
/// 停用
/// </summary>
[Description("禁用")]
Stop = 0,
/// <summary>
/// 可用
/// </summary>
[Description("启用")]
Enable = 1,
/// <summary>
/// 删除
/// </summary>
[Description("删除")]
Delete = 2
}
#endregion
#region 公用状态
/// <summary>
/// 公用状态
/// </summary>
public enum PublicIsVindicate
{
/// <summary>
/// 是
/// </summary>
[Description("是")]
Yes = 1,
/// <summary>
/// 否
/// </summary>
[Description("否")]
No = 0
}
#endregion
#region 收付类型
public enum IncExpType
{
[Description("收入")]
income = 1,
[Description("支出")]
expend = 2
}
#endregion
/// <summary>
/// 得到enum值描述列表
/// </summary>
/// <returns></returns>
public static Dictionary<int, string> EnumValueDescription(Type enumType)
{
Dictionary<int, string> dic = new Dictionary<int, string>();
Type type = typeof(DescriptionAttribute);
FieldInfo[] fields = enumType.GetFields();
foreach (FieldInfo field in fields)
{
object[] arr = field.GetCustomAttributes(type, true);
if (arr.Length > 0)
{
dic.Add((int)Enum.Parse(enumType, field.Name), ((DescriptionAttribute)arr[0]).Description);
}
}
return dic;
}
/// <summary>
/// 得到enum字段描述列表
/// </summary>
/// <returns>返回字典</returns>
public static Dictionary<string, string> EnumFieldDescription(Type enumType)
{
Dictionary<string, string> dic = new Dictionary<string, string>();
Type type = typeof(DescriptionAttribute);
FieldInfo[] fields = enumType.GetFields();
foreach (FieldInfo field in fields)
{
object[] arr = field.GetCustomAttributes(type, true);
if (arr.Length > 0)
{
dic.Add(field.Name, ((DescriptionAttribute)arr[0]).Description);
}
}
return dic;
}
/// <summary>
/// 由枚举值得到枚举描述
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="value"></param>g.
/// <returns></returns>
public static string GetEnumDescription<T>(string value)
{
Type type = typeof(T);
Dictionary<string, string> dic = EnumFieldDescription(type);
string description = string.Empty;
if (!string.IsNullOrWhiteSpace(value))
{
if (dic.ContainsKey(Convert.ToString((T)Enum.Parse(type, value))))
{
description = dic[Convert.ToString((T)Enum.Parse(type, value))];
}
}
return description;
}
/// <summary>
/// 由枚举描述得到枚举值
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="description"></param>
/// <returns></returns>
public static int GetEnumDescriptionvalue<T>(string description)
{
Type type = typeof(T);
Dictionary<int, string> dic = EnumValueDescription(type);
int value = 0;
if (!string.IsNullOrWhiteSpace(description))
{
foreach (KeyValuePair<int, string> pair in dic)
{
if (pair.Value == description)
{
value = pair.Key;
return value;
}
}
}
return value;
}
/// <summary>
/// 绑定枚举的描述列表-客户端控件
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="blnIsAll">是否填充“全部”</param>
/// <param name="blnIsLine">是否填充“请选择”</param>
public static string EnumBindList_Client<T>(bool blnIsAll, bool blnIsLine)
{
return EnumBindList_Client<T>(blnIsAll, blnIsLine, null);
}
/// <summary>
/// 绑定枚举的描述列表并选中相应结果
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="blnIsAll">是否填充“全部”</param>
/// <param name="blnIsLine">是否填充“请选择”</param>
public static string EnumBindList_Client<T>(bool blnIsAll, bool blnIsLine, int? strEnumValue)
{
//注意:‘--’和‘全部’不要同时添加,即两个bool值不能同时为true
StringBuilder dropDownListHtml = new StringBuilder();
if (blnIsAll)
{
dropDownListHtml.Append("<option value=\"").Append(PublicConst.PUBLICSTATUSALL_VALUE).Append("\">").Append("全部").Append("</option>");
}
if (blnIsLine)
{
dropDownListHtml.Append("<option value=\"").Append(PublicConst.PUBLICSTATUSLINE_VALUE).Append("\">").Append("请选择").Append("</option>");
}
Dictionary<int, string> enumDic = EnumValueDescription(typeof(T));
foreach (KeyValuePair<int, string> pair in enumDic)
{
if (strEnumValue != null && strEnumValue.ToString() == pair.Key.ToString())
{
dropDownListHtml.Append("<option selected='selected' value=\"").Append(pair.Key.ToString()).Append("\">").Append(pair.Value).Append("</option>");
}
else
{
dropDownListHtml.Append("<option value=\"").Append(pair.Key.ToString()).Append("\">").Append(pair.Value).Append("</option>");
}
}
return dropDownListHtml.ToString();
}
}
}
示例:(页面调用)
str = PublicEnum.EnumBindList_Client<PublicEnum.IncExpType>(false, true, (int)PublicEnum.PublicIsVindicate.Yes);
str1 = PublicEnum.EnumBindList_Client<PublicEnum.IncExpType>(false,true);
.net枚举类使用 按枚举值得到枚举描述
最新推荐文章于 2022-09-20 16:29:58 发布