DeviceManager/DeviceRepair.Utils/EnumExtend.cs

68 lines
2.1 KiB
C#
Raw Permalink Normal View History

2024-07-17 02:32:45 +00:00
using DeviceRepair.Models.Attr;
using System;
using System.Collections.Generic;
using System.Reflection;
namespace DeviceRepair.Utils
{
public static class EnumExtend
{
public static string[] GetComboBoxItems(Type enumType)
{
List<string> Captions = new List<string>();
/* 非枚举对象,返回空数组对象 */
if (!enumType.IsEnum)
{
return Captions.ToArray();
}
// 获取枚举的所有字段
FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
foreach (FieldInfo field in fields)
{
// 获取字段上的所有特性
object[] attributes = field.GetCustomAttributes(typeof(ComboBoxItemAttribute), false);
foreach (ComboBoxItemAttribute attribute in attributes)
{
if (!attribute.IsIgnore && !attribute.Caption.IsNull())
{
Captions.Add(attribute.Caption);
}
}
}
return Captions.ToArray();
}
public static object GetComboBoxItemValue(Type enumType, string Caption)
{
/* 非枚举对象,返回空数组对象 */
if (!enumType.IsEnum)
{
return null;
}
// 获取枚举的所有字段
FieldInfo[] fields = enumType.GetFields(BindingFlags.Public | BindingFlags.Static);
foreach (FieldInfo field in fields)
{
// 获取字段上的所有特性
object[] attributes = field.GetCustomAttributes(typeof(ComboBoxItemAttribute), false);
foreach (ComboBoxItemAttribute attribute in attributes)
{
if (attribute.Caption == Caption)
{
return Enum.Parse(enumType, field.Name);
}
}
}
return null;
}
}
}