将带有 [DescriptionAttribute] 的枚举转换为 Dictionary

本文关键字:Dictionary string int 转换 枚举 DescriptionAttribute | 更新日期: 2023-09-27 17:55:56

我有这个枚举

public enum Genders
    {
        [Description("Nữ")]
        Female,
        [Description("Nam")]
        Male
    }

我使用此代码获取每个枚举名称和值并将其保存到字典中结果是

女 : 0

男 :1

    accountViewModel.Genders = Enum.GetValues(typeof(Account.Genders))
                               .Cast<Account.Genders>()
                               .ToDictionary(t => t.ToString(), t => (int)t);

如何对上面的代码进行修改以获取每个枚举的描述及其值?

喜欢这个。

Nữ : 0

南 : 1

将带有 [DescriptionAttribute] 的枚举转换为 Dictionary<string,int>

根据 https://stackoverflow.com/a/2650090/643095 的回答,

string description = Enumerations.GetEnumDescription((MyEnum)value);

其中valueint枚举值。

你可以使用这样的东西:

accountViewModel.Genders = Enum.GetValues(typeof(Account.Genders))
                               .Cast<Account.Genders>()
                               .ToDictionary(t => Enumerations.GetEnumDescription((Genders)t), t => (int)t);