带空格的枚举.TryParse不工作 - C#

时间:2017-02-15 18:17:22

标签: c# .net oop enums

我有一个枚举类型,其中包含带空格的项目

     public enum Enum1
    {
        [Description("Test1 Enum")]
        Test1Enum,
        [Description("Test2 Enum")]
        Test2Enum,
        [Description("Test3Enum")]
        Test3Enum, 
    }

   public void TestMethod(string testValue)
     {
        Enum1 stEnum;
        Enum.TryParse(testValue, out stEnum);
        switch (stEnum)
        {
            case ScriptQcConditonEnum.Test1Enum:
                Console.Log("Hi");
                break;
        }
      }

当我使用Enum.TryParse(testValue,out stEnum)时,它总是返回第一个元素。

 // Currently stEnum returns Test1Enum which is wrong
    Enum.TryParse("Test2 Enum", out stEnum) 

2 个答案:

答案 0 :(得分:2)

您可以从枚举描述中解析枚举,但您需要从描述中检索枚举值。请查看以下示例,从Enum说明中检索枚举值并根据需要进行解析。

Enum描述的枚举值:

Enum.TryParse(GetValueFromDescription<Enum1>("Test2 Enum").ToString(), out stEnum);

解析示例:

TListThing = class
  private
    FList : TList<string>;
  public
    property List : TList<String> read FList write FList;

    constructor Create;
    destructor Destroy;
  end;

答案 1 :(得分:1)

Enum.TryParse尝试根据枚举值而不是描述来解析字符串。如果您的要求是根据描述进行解析,则需要使用反射来获取属性值。在这个SO问题中已经回答了如何做到这一点:Finding an enum value by its Description Attribute