Example #1
0
        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());
        }