/// <summary>
/// 返回指定枚举类型的指定值的描述
/// </summary>
/// <param name="t">枚举类型</param>
/// <param name="v">枚举值</param>
/// <returns></returns>
private static string GetDescription(System.Type t, object v)
{
try
{
if (!Enum.IsDefined(t, v))
return "未知";
FieldInfo fi = t.GetField(GetName(t, v));
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return (attributes.Length > 0) ? attributes[0].Description : GetName(t, v);
}
catch
{
return "未知";
}
}
public static SortedList GetStatus(System.Type t)
{
SortedList list = new SortedList();
if (t.Equals(typeof(AppEnum.SalesPaymentStatus)))
{
Array a = Enum.GetValues(t);
for (int i = 0; i < a.Length; i++)
{
string enumName = a.GetValue(i).ToString();
int enumKey = (int)System.Enum.Parse(t, enumName);
if (enumKey == (int)AppEnum.SalesPaymentStatus.Create || enumKey == (int)AppEnum.SalesPaymentStatus.WaitAudit || enumKey == (int)AppEnum.SalesPaymentStatus.Audit || enumKey == (int)AppEnum.SalesPaymentStatus.Claim)
{
continue;
}
string enumDescription = GetDescription(t, enumKey);
list.Add(enumKey, enumDescription);
}
}
else if (t.Equals(typeof(AppEnum.SalesPaymentMode)))
{
Array a = Enum.GetValues(t);
for (int i = 0; i < a.Length; i++)
{
string enumName = a.GetValue(i).ToString();
int enumKey = (int)System.Enum.Parse(t, enumName);
if (enumKey == (int)AppEnum.SalesPaymentMode.CaiWuHuiTian)
{
continue;
}
string enumDescription = GetDescription(t, enumKey);
list.Add(enumKey, enumDescription);
}
}
else
{
Array a = Enum.GetValues(t);
for (int i = 0; i < a.Length; i++)
{
string enumName = a.GetValue(i).ToString();
int enumKey = (int)System.Enum.Parse(t, enumName);
string enumDescription = GetDescription(t, enumKey);
list.Add(enumKey, enumDescription);
}
}
return list;
}
public static SortedList GetStatus<T>()
{
return GetStatus(typeof(T));
}
public static string GetDescription<T>(object v)
{
return GetDescription(typeof(T), v);
}