如何通过RuntimeType获取枚举的显示名称和值

时间:2019-07-10 07:21:54

标签: .net asp.net-core .net-core

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()处的参数

0 个答案:

没有答案