diff --git a/ICSharpCode.Decompiler/CecilExtensions.cs b/ICSharpCode.Decompiler/CecilExtensions.cs index 89377bf55..2c1795137 100644 --- a/ICSharpCode.Decompiler/CecilExtensions.cs +++ b/ICSharpCode.Decompiler/CecilExtensions.cs @@ -215,6 +215,23 @@ namespace ICSharpCode.Decompiler return true; return IsCompilerGeneratedOrIsInCompilerGeneratedClass(member.DeclaringType); } + + public static TypeReference GetEnumUnderlyingType(this TypeDefinition type) + { + if (!type.IsEnum) + throw new ArgumentException("Type must be an enum", "type"); + + var fields = type.Fields; + + for (int i = 0; i < fields.Count; i++) + { + var field = fields[i]; + if (!field.IsStatic) + return field.FieldType; + } + + throw new NotSupportedException(); + } public static bool IsAnonymousType(this TypeReference type) {