This took me a good while to figure out. This is specifically for looping through multiple enumerations declared inside of a class. This code would have to be modified slightly in order to loop through all enumerations inside of a namespace. I searched for this code everywhere on the net and I couldn’t find it so I wrote it myself.
Enjoy.
public void GetAllEnums()
{
object enumValue;
string[] arrEnumNames;
Type enumType;
FieldInfo field;
MemberInfo member;
//Get all of the members of this class, this includes everything
MemberInfo[] members = typeof(AllEnumsToTable).GetMembers();
//Loop through the members.
//Hard coded to 7 because I can't figure out how to filter just for enums
//System.RuntimeType isn't allowed to be used for what ever reason
for (int i = 0; i < members.Length; i++ )
{
member = members[i];
if (member.MemberType == MemberTypes.NestedType)
{
enumType = Type.GetType(member.DeclaringType.FullName + "+" + member.Name);
if (enumType.IsEnum)
{
Console.WriteLine(member.Name);
arrEnumNames = enumType.GetEnumNames();
foreach (string name in arrEnumNames)
{
field = enumType.GetField(name);
enumValue = field.GetRawConstantValue();
Console.WriteLine("Key {0} Value {1}", name, Convert.ToString(enumValue));
}
}
Console.WriteLine();
}
}
}
Many thanks for this, was a major help
No problem 😀