var enumlist = Assembly.LoadFile(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + @"\\" + TgNetJZConsts.LocalizationSourceName + ".Core.dll").GetTypes().
Where(x => x.IsSubclassOf(typeof(Enum)) && (x.CustomAttributes.Count() != 0 && x.CustomAttributes.FirstOrDefault().AttributeType.Name == nameof(MyEnumAttribute)));
此获取项目的所有枚举类型
foreach (Type enumType in enumlist)
{
var list = EnumExtensions.GetEnumToDisplayNameAndValueList<>();
}
public static List<EnumListDto> GetEnumToDisplayNameAndValueList<T>() where T : struct, IConvertible
{
var enumDictionary = Enum.GetValues(typeof(T))
.Cast<T>()
.Select(x => new EnumListDto
{
name = x.GetType().GetMember(x.ToString()).FirstOrDefault().GetCustomAttribute<DisplayAttribute>().GetName(),
value = Convert.ToInt32(Enum.Parse(typeof(T), x.ToString()))
})
.ToList();
return enumDictionary;
}
如何修改代码以获取每个枚举的显示名称和值 现在出现错误 提供的类型必须是枚举。 System.RuntimeType.GetEnumValues()处的参数