public static string FormatEnumValue(TypeDefinitionData enumType, object value) { var unqualifiedName = enumType.GetDisplayName(fullyQualify: false); foreach (ConstantData constant in enumType.GetMembers()) { if (Object.Equals(constant.Value, value)) { return(unqualifiedName + "." + constant.Name); } } if (enumType.IsFlagsEnum) { var sb = new StringBuilder(); var longValue = Convert.ToUInt64(value); foreach (ConstantData constant in enumType.GetMembers()) { var longFlag = Convert.ToUInt64(constant.Value); if ((longValue & longFlag) == longFlag) { longValue &= ~longFlag; if (sb.Length != 0) { sb.Append(" | "); } sb.AppendFormat("{0}.{1}", unqualifiedName, constant.Name); if (longValue == 0) { return(sb.ToString()); } } } } var rawValue = (ulong)value; return(string.Format("({0}){1}", unqualifiedName, rawValue)); }