首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当多个值具有相同的值时,从枚举获取属性名称

当多个值具有相同的值时,从枚举获取属性名称
EN

Stack Overflow用户
提问于 2014-01-05 13:00:20
回答 1查看 138关注 0票数 0

我有这个枚举:

代码语言:javascript
运行
复制
public enum PPossumResp
{
    [EnumName("No Dyspnea")]
    NoDyspnea = 1,

    [EnumName("Dyspnea On Exertion")]
    DyspneaOnExertion = 2,

    [EnumName("Mild COPD on CXR")]
    MildCOPDonCXR = 2,

    [EnumName("Limited Dyspnea")]
    LimitedDyspnea = 4,

    [EnumName("Moderate COPD")]
    ModerateCOPD = 4,

    [EnumName("Dyspnea At Rest")]
    DyspneaAtRest = 8,

    [EnumName("Fibrosis")]
    Fibrosis = 8
}

我正在尝试用所有的EnumName属性填充一个列表。

我有一个尝试这样做的方法:

代码语言:javascript
运行
复制
public EnumPickerViewModel(Parameter param)
{
    this.param = param;
    List<string> enumNames = new List<string>();

    foreach(Enum type in Enum.GetValues(param.Value.GetType()))
    {
        enumNames.Add(Utils.GetEnumName(type));
    }
}

不幸的是,enumNames填充了以下内容: 0:无呼吸困难1:用力呼吸困难2:轻度慢性阻塞性肺疾病3:局限性呼吸困难4:局限性呼吸困难5:休息时呼吸困难6:休息时呼吸困难

由于局限性呼吸困难和中度慢性阻塞性肺疾病的值相同,而静息时的呼吸困难和纤维化的值也相同,因此看起来Enum.GetValues()只获取第一个值并接受该字符串属性。我怎样才能获得所有的枚举名称,而不是重复的值?

EN

回答 1

Stack Overflow用户

发布于 2014-01-05 13:33:26

你不能这样做。像这样,请参考这个问题以获取更多信息:Non-unique enum values

但作为一种变通办法,我建议您使用[Flags]属性。enum定义将是st。如下所示:

代码语言:javascript
运行
复制
[Flags]
public enum PPossumResp
{
    NoDyspnea = 1,

    DyspneaOnExertion = 2,

    MildCOPDonCXR = 4,

    LimitedDyspnea = 8,

    ModerateCOPD = 16,

    DyspneaAtRest = 32,

    Fibrosis = 64
}

你可以这样使用它:

代码语言:javascript
运行
复制
    PPossumResp values = (PPossumResp)(4 | 8);

因此,如果您获得像values.ToString()这样的values字符串表示,则输出将如下所示:

代码语言:javascript
运行
复制
Output:

"MildCOPDonCXR, LimitedDyspnea"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20930262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档