public string WriteOptionValue(object value) { if (value == null) { return("N/A"); } Type type = value.GetType(); if (type.IsEnum && value is Enum e) { long sum = Convert.ToInt64(e); bool useFlags = type.GetCustomAttribute <FlagsAttribute>() != null; if (sum == type.GetEnumValues().Cast <Enum>().Select(Convert.ToInt64).Sum()) { return($"{sum} (All)"); } // if (!useFlags && !Enum.GetNames(type).Contains(e.ToString())) // return $"{sum}{(sum == 0 ? " (None)" : "")}"; string names = sum == 0 ? "None" : useFlags?string.Join(", ", EnumUtils.GetFlags(value).Select(x => x.ToString())) : e.ToString(); return($"{sum} ({names})"); } return(value.ToString()); }