I have defined a Enum as blow, it includes int type and character type.
I tried to parse string into enum, but it would occur error when input character.
How to fix this?
//parse successfully.
MyEnum myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), "1");
//error:Requested value 'A' was not found.
MyEnum myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), "A");
public enum MyEnum
{
[Description("Des1")]
Status1 = 1,
[Description("Des2")]
Status2 = 2,
[Description("Des3")]
Status3 = 3,
[Description("Des4")]
Status4 = 4,
[Description("Des7")]
Status5 = 5,
[Description("Des6")]
Status6 = 6,
[Description("Des7")]
Status7 = 7,
[Description("Des8")]
Status8 = 8,
[Description("Des9")]
Status9 = 9,
[Description("DesA")]
StatusA = 'A',
[Description("DesB")]
StatusB = 'B',
[Description("DesC")]
StatusC = 'C',
}
Update:
OK, I think I need check the input is digit or not to do different process. Code as Below did work, thanks for everyone's advise.
string inputParam = "A";
int useLess;
MyEnum myEnum;
var isDigit = int.TryParse(inputParam, out useLess);
if (isDigit) {
myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), inputParam);
}
else
{
myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), ((int)Convert.ToChar(inputParam)).ToString());
}