我有一个枚举类型,其中包含带空格的项目
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)
答案 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