【发布时间】:2017-02-15 18:17:21
【问题描述】:
我有一种枚举类型,其中包含带有空格的项目
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)
【问题讨论】:
-
testValue中有什么内容?它查看值的名称,而不是描述。我的意思是你的枚举中没有空格。 -
TryParse 很可能返回 false,表示解析失败,而 stEnum 是默认值 0,即 TestEnum1。我不确定这个 DescriptionAttribute 是什么,但我认为 Enum.Parse/TryParse 方法对它没有任何作用。
-
@Brandon testValue 是字符串。例如:Test1 Enum ..ie 与我在 [Description] 属性中输入的值相同
-
它不比较
Description值。它看名字 -
另外,如果使用 object.TryParse,请检查返回值(这就是为什么它是
Try)。if (! Enum.TryParse(...) { ReportThatItFailed(); }