public static I RandomEnumeration<I>()
{
I enumerationToCheck;
Int32 indexToUse;
String[] names;
//Use activator to create an instance of the type I
enumerationToCheck = System.Activator.CreateInstance<I>();
//Make sure the instance is an Enumeration
//Unfortunately you can't check that in the method
//delcaring using "which".
if (enumerationToCheck as Enum == null)
{
throw new InvalidOperationException();
}
//Get the list of the enumeration item names
names = Enum.GetNames(typeof(I));
if (names.Length > 0)
{
//Grab a random name within the boundaries of the
//names collection.
indexToUse = RandomInt32(0, names.Length);
//parse the name to create the random enum
enumerationToCheck = (I)Enum.Parse(typeof(I), names[indexToUse]);
}
return enumerationToCheck;
}
Usage:
SomeEnum test = RandomEnumeration();
Why bother? For unit testing and creating test classes. Possibly
for defaults on an enumeration, but not really needed since
they are value types. Oh yeah AND BECAUSE I FELT LIKE IT. I don't
have to explain myself to you.
No comments:
Post a Comment