加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 当Enum类型未知时返回默认枚举值

发布时间:2020-12-15 17:36:29 所属栏目:百科 来源:网络整理
导读:我有一个方法尝试将字符串与枚举值的DescriptionAttribute匹配,然后返回枚举值.如果没有找到匹配,它应该返回一个默认值,我认为我可以返回0.但它不会发生…… private Enum GetEnumFromDescription(Type enumType,string description){ var enumValues = Enum
我有一个方法尝试将字符串与枚举值的DescriptionAttribute匹配,然后返回枚举值.如果没有找到匹配,它应该返回一个默认值,我认为我可以返回0.但它不会发生……
private Enum GetEnumFromDescription(Type enumType,string description)
{
      var enumValues = Enum.GetValues(enumType);

      foreach (Enum e in enumValues)
      {
          if (string.Compare(description,GetDescription(e),true) == 0)
                    return e;
      }

      return 0; // not compiling
}

我该怎么编码上面的?

解决方法

您可以使用
return (Enum) Activator.CreateInstance(enumType);

这将为您提供该类型的默认值 – 这是您想要的.

编辑:我希望你在编译时知道类型,在这种情况下泛型是一个很好的方法.尽管情况似乎并非如此,但我将留下其余的答案,以防其他人使用它.

或者,您可以使用Unconstrained Melody,它已经包含类似此功能的更高效,类型安全的形式:)

MyEnum value;
if (Enums.TryParseDescription<MyEnum>(description,out value))
{
    // Parse successful
}

如果解析操作不成功,则value将设置为“0”值.

目前它区分大小写,但您可以轻松创建不区分大小写的版本. (或者让我知道,我可以这样做.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读