private IEnumerable <NamedValue> ConvertClrValuesToAvoidToConceptualValues(IEnumerable <NamedValue> clrValues)
            {
                var result = new List <NamedValue>();

                foreach (var value in clrValues)
                {
                    Type valueType = value.Value != null?value.Value.GetType() : null;

                    if (valueType != null && valueType.IsEnum())
                    {
                        object underlyingValue = DataUtilities.ConvertFromEnum(value.Value);

                        // add as an underlying value
                        result.Add(new NamedValue(value.Name, underlyingValue));

                        string enumMemberName = Enum.GetName(valueType, underlyingValue);
                        if (enumMemberName != null)
                        {
                            // add as a string value
                            result.Add(new NamedValue(value.Name, enumMemberName));
                        }
                    }
                    else
                    {
                        result.Add(value);
                    }
                }

                return(result);
            }
Esempio n. 2
0
        /// <summary>
        /// Converts a object to a string value and indicates its type and whether it successfully converted it or not
        /// </summary>
        /// <param name="value">Value to Convert</param>
        /// <param name="newStringValue">New Converted Value</param>
        /// <param name="valueType">Type of the original Value</param>
        /// <returns>True if it was converted or false if it was not</returns>
        internal static bool TryConvertPrimitiveValueToString(object value, out string newStringValue, out Type valueType)
        {
            valueType      = null;
            newStringValue = null;

            if (value == null)
            {
                return(true);
            }

            valueType = value.GetType();

            if (valueType == typeof(bool))
            {
                var valueToConvert = (bool)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(byte))
            {
                var valueToConvert = (byte)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(char))
            {
                var valueToConvert = (char)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(DateTime))
            {
                var valueToConvert = (DateTime)value;
                newStringValue = PlatformHelper.ConvertDateTimeToString(valueToConvert);
            }
            else if (valueType == typeof(DateTimeOffset))
            {
                var valueToConvert = (DateTimeOffset)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(decimal))
            {
                var valueToConvert = (decimal)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(double))
            {
                var valueToConvert = (double)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(float))
            {
                var valueToConvert = (float)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(Guid))
            {
                var valueToConvert = (Guid)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(int))
            {
                var valueToConvert = (int)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(long))
            {
                var valueToConvert = (long)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(sbyte))
            {
                var valueToConvert = (sbyte)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(short))
            {
                var valueToConvert = (short)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(string))
            {
                newStringValue = (string)value;
            }
            else if (valueType == typeof(TimeSpan))
            {
                var valueToConvert = (TimeSpan)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(uint))
            {
                var valueToConvert = (uint)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(ulong))
            {
                var valueToConvert = (ulong)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType == typeof(ushort))
            {
                var valueToConvert = (ushort)value;
                newStringValue = XmlConvert.ToString(valueToConvert);
            }
            else if (valueType.GetBaseType() == typeof(Enum))
            {
                newStringValue = Enum.GetName(valueType, value);
                if (newStringValue == null)
                {
                    Type underlyingValueType;
                    TryConvertPrimitiveValueToString(DataUtilities.ConvertFromEnum(value), out newStringValue, out underlyingValueType);
                }
            }
            else
            {
                return(false);
            }

            return(true);
        }