Wimdows.NET

Wim's .NET blog

Generic Parse method on Enum - a solution

David Findley writes about how he wishes we had a generic Parse method on the Enum class in .NET 2.0.

Though I agree in principle, it's actually quite trivial to create a generic static class with a Parse method, which alleviates some of the pain.

Here's my stab at it:

    public static class EnumUtil<T>
    {
        public static T Parse(string s)
        {
            return (T)Enum.Parse(typeof(T), s);
        }
    }


Say we have the following enum:

    public enum Color
    {
        Black,
        White,
        Blue,
        Red,
        Green
    }

We can now simply use the generic EnumUtil class as follows:

Color c = EnumUtil<Color>.Parse("Black");

I feel that this helper method doesn't actually warrant a class in its own right, so you may want to add it to one of your Util classes (if you happen to have a generic one!) instead.

Posted: Jul 06 2006, 09:59 AM by Wim | with 12 comment(s)
Filed under: ,

Comments

Jens said:

Am I wrong or is it a mistake?:

Color c = EnumUtil<Number>.Parse("Black");

should be

Color c = EnumUtil<Color >.Parse("Black");

or?

# July 6, 2006 5:38 AM

Wim said:

Ofcourse Jens - that's because I started out with an enum called Number, but renamed it in-situ to an enum called Color (as that seemed a better example for an enum) while I was editing my post. Fixed now though.

# July 6, 2006 6:28 AM

DotNetKicks.com said:

Trackback from DotNetKicks.com

# July 6, 2006 7:47 AM

Jouni Heikniemi said:

It would probably make more sense to use the type parameter at the method level (i.e. public static T Parse<T>(string s)) instead of the class level.

Having a type-parameterized utility class may be useful in some particular context, but unless it's instantiated for some purposes (such as to wrap or manage the instances of the original class/enum), I'd vote for keeping the type parameterization at the static method level.

# July 6, 2006 7:58 AM

David Truxall said:

I posted a TryParse style function for enums on my blog at http://dotnetjunkies.com/WebLog/davetrux/archive/2005/12/07/134190.aspx

# July 6, 2006 9:36 AM

findleyd said:

I'm actually doing this at the moment. Thats how I came up with the idea of Hey, why don't they just do this on the Enum class so millions of developers won't have to go write util code. :)

Personally I think MS was very conservative with the use of generics in the 2.0 fwk. Once we get to WinFX errr... .NET FWK 3.0 I think the use of gerics will explode. I just hope they remember to give the enum class some love. :P

# July 6, 2006 9:38 AM

Wim said:

Jouni - you're right, unless you got a good reason for having a generic util class, it makes more sense just having a static generic method.

David - nice one, your generic TryParse() function. Not sure whether it'd be better to raise an exception or return a boolean if teh value cannot be parsed but hey...

Dave - yep, it would make a lot of sense, and in many cases they have not really looked at existing classes in the framework and said:"Now, where would it be useful to add generics into the mix...", even if they'd limited that to the System namespace...

# July 6, 2006 10:55 AM

Generic Parse method on Enum - a solution said:

Pingback from  Generic Parse method on Enum - a solution

# November 26, 2007 2:24 PM

greyson said:

public static class GenericEnum<T>

   where T : struct, IComparable, IFormattable, IConvertible

 {

   public static bool TryParse(String value)

   {

     bool parsable = false;

     if (Enum.IsDefined(typeof(T), value))

     {

       parsable = true;

     }

     return parsable;

   }

   public static T Parse(String value, bool ignoreCase)

   {

     return (T)Enum.Parse(typeof(T), value, ignoreCase);

   }

   public static T Parse(String value)

   {

     return Parse(value, false);

   }

 }

# November 15, 2008 10:50 AM

Developer Tales n°6 - Generic Enum parsing « Xmlguy Weblog said:

Pingback from  Developer Tales n&deg;6 - Generic Enum parsing &laquo; Xmlguy Weblog

# December 5, 2008 10:37 AM

nick_rodome said:

# May 16, 2009 8:54 AM

poori said:

I hear that term "jail broken" all the time when talking to friends but i never understood what it meant. I want to say that if you buy a jail broken iphone you don't have to pay for the data usage plan. Is that true? What exactly does it mean jail broken and what is its functions? Thanks.

________________

<a href="www.youtube.com/watch iphone 3gs</a>

# October 14, 2009 5:28 AM
Leave a Comment

(required) 

(required) 

(optional)

(required)