Technology Corner

Home » CodeProject » Problem in parsing string value to enum type

Problem in parsing string value to enum type

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 80 other followers

Twitter updates


RSS InfoQ Feeds


Today I faced one issue with Enum.TryParse or Enum.Parse method. I was trying to parse string value to Enum but Enum.TryParse/Enum.Parse method was giving always true value for string which is not member of enum.

public enum FieldAccessType
        ReadOnly = 1,
        Add = 2,
        Modify = 4,
        AddModify = 6

I want to convert string value say “30” to enum type that is not member of enum and conversion shoule be fails but I am always getting true value return enum.TryParse method which is surprising. I don’t know why it is not behaving as per expectation.

 FieldAccessType type;
 bool res=Enum.TryParse("20",out type );
 Assert.IsFalse(res); //test is failing bcoz res is true

I found msdn documentation for Enum.TryParse/Enum.Parse and found following lines:

“If value is the string representation of an integer that does not represent an underlying value of the TEnum enumeration, the method returns an enumeration member whose underlying value is value converted to an integral type. If this behavior is undesirable, call the IsDefined method to ensure that a particular string representation of an integer is actually a member of TEnum.”

Below is code which I corrected after:

FieldAccessType fieldAccessType;
                    int intEnumValue;
                    if (Int32.TryParse(Value, out intEnumValue))
                        if (Enum.IsDefined(typeof (FieldAccessType), intEnumValue))
                            return (FieldAccessType) intEnumValue;

Enum.IsDefined to veryify that the value you parsed actually exists in this particular enum.

I hope this trick will help you.


1 Comment

  1. Nick Hanshaw says:

    Much appreciated, I thought that behavior was strange, glad I found your post.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blogs I Follow

%d bloggers like this: