У меня есть один типа перечисления, который, имеющие элементы с пространствамиEnum с пространствами .TryParse не работает - C#
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, из stEnum), она всегда возвращает первый элемент.
// Currently stEnum returns Test1Enum which is wrong
Enum.TryParse("Test2 Enum", out stEnum)
Что в 'testValue'? Он смотрит на имя значения, а не на описание. Под этим я подразумеваю, что в вашем перечислении нет пробелов. – Brandon
По всей вероятности TryParse возвращает false, что означает, что синтаксический анализ не прошел, а stEnum - значение по умолчанию 0, которое является TestEnum1. Я не уверен, что это за атрибут DescriptionAttribute, но я не думаю, что методы Enum.Parse/TryParse ничего с этим не делают. –
@Brandon testValue - это строка. например: Test1 Enum ..ie то же, что и значение i, помещенное в атрибут [Description] – vmb