JoelDixon.com

"Uh, no, you got the wrong number. This is 9-1 ... 2." - Chief Wiggum, The Simpsons 8F17

Blog
General
Travel
Sport
Hockey
Technical
Gaming
Pages
Travel Plans
Live Music
Links
About


Blog Archive
Current Blogs
March 2010 (1)
February 2010 (3)
January 2010 (5)
December 2009 (1)
November 2009 (1)
October 2009 (1)
September 2009 (1)
August 2009 (2)
July 2009 (1)
June 2009 (2)
May 2009 (3)
April 2009 (1)
March 2009 (1)
February 2009 (13)
January 2009 (1)
2008 (25)
2007 (67)
2006 (23)
2005 (32)
2004 (10)

Blog Tags
General
10 in '10 (4)
Books (1)
DVDs (2)
Funny (12)
Gadgets (5)
Hawt (1)
Movies (13)
Music (6)
Pets (3)
Recipe (14)
TV Shows (1)
Web (27)
Travel
Calgary (2)
Edmonton (12)
New York (7)
Niagara Falls (2)
Pittsburgh (5)
Washington (4)
Sport
Basketball (1)
Running (3)
Hockey
Pittsburgh Penguins (25)
Technical
.NET (3)
Java (4)
Software (3)
Work (2)
Gaming
Commodore 64 (2)
Master System (1)
Mega Drive (1)
Xbox 360 (15)
XNA (1)

GamerTag


The rarely updated blog of Joel Dixon

Viewing blogs tagged XNA

Sunday, February 01, 2009

Enum Members and the .NET Compact Framework

# Posted by Joel Dixon at 01/02/2009 16:37:16

When working on my latest weekend coding project, I am occasionally limited by the methods offered (and not offered) by the .NET Compact Framework (XNA projects are compiled against the compact framework). Usually these limitations are pretty minor (i.e. as TryParse is not available, I need to put a try-catch block around a regular Parse call).

Today I stumbled over another unavailable method - Enum.GetNames(). The GetNames method is called when using Reflection to determine, at runtime, the elements in an enumeration. It took a bit of hunting and experimenting - but here's a Compact Framework-friendly method of achieving the same thing:

C# Code:

enum ShakeFlavour
{
Chocolate,
Strawberry,
Vanilla
}

Type type = typeof(ShakeFlavour);

// Print the list of enum elements - Public and Static BindingFlags required
// to skip internal "value__" field
FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.Static);
foreach (FieldInfo info in fields)
{
Console.WriteLine(info.Name);
}

// Parse an enum element from a string
string myFlavour = "Strawberry";
try
{
ShakeFlavour enumObject = (ShakeFlavour)Enum.Parse(type, myFlavour, true);
Console.WriteLine("Shake Flavour: {0}", enumObject);
}
catch (Exception ex)
{
Console.WriteLine("enum element not recognised");
}

It's pretty good that Reflection is included in the compact framework - but it's slightly surprising that they couldn't fit in the Enum.GetNames() method as well.



Comments (0) | Add Comment

Blog Search

Advanced Search


Recent Blogs
Yeah ... Baby!
xkcd Parody
Donate money for my next stupid run
Feta, Sushi and Underwear
Pimpy McHat Attack
Chai did it!
10 things for 2010
Party like it's 1999
Literal Music Videos
Green Day - Melbourne, 2009

Feed
Subscribe to feed Blog Entries

Add to Google
Add to My Yahoo!
Add to Netvibes

Recent Comments
Green Day - Melbourne, 2009
posted 3 months ago by joeldixon
The Offspring is probably the one that I most want to see next - except for maybe Daft Punk. I'm ... link

Green Day - Melbourne, 2009
posted 3 months ago by Brad
Can't believe it took you this long, but as far as first concerts go Green Day would have to be ... link

Great Australian Run - 2009
posted 3 months ago by joeldixon
Thanks Hitman - the "we stuffed up the distance" article generally takes a few days to be released - so ... link

Great Australian Run - 2009
posted 3 months ago by Hitman
Hey Dixon, I haven't read any articles suggesting otherwise, so I will take you at you word that you ran ... link

I ran a[n eighth of a] marathon today!
posted 5 months ago by joeldixon
I should be fine. I'm sure the 15km will only be around 850 meters, after the measuring errors etc :) link


Comment Standings
1. the man with no name (45)
2. Hoff (39)
3. Gav (27)
4. Hitman (25)
5. Brad (22)
6. Eryc-Ads (13)
7. Deep Lurker (6)
8. thefury (5)
9. Dieter (4)
10. Zelks (4)

About This Site | Contact Me