System.Data.Common.SqlConvert.ChangeTypeForXML C# (CSharp) Method

ChangeTypeForXML() public static method

public static ChangeTypeForXML ( object value, Type type ) : object
value object
type Type
return object
        public static object ChangeTypeForXML(object value, Type type)
        {
            Debug.Assert(value is string || type == typeof(string), "invalid call to ChangeTypeForXML");
            StorageType destinationType = DataStorage.GetStorageType(type);
            Type valueType = value.GetType();
            StorageType vtype = DataStorage.GetStorageType(valueType);

            switch (destinationType)
            { // if destination is not string
                case StorageType.SqlBinary:
                    return new SqlBinary(Convert.FromBase64String((string)value));
                case StorageType.SqlBoolean:
                    return new SqlBoolean(XmlConvert.ToBoolean((string)value));
                case StorageType.SqlByte:
                    return new SqlByte(XmlConvert.ToByte((string)value));
                case StorageType.SqlBytes:
                    return new SqlBytes(Convert.FromBase64String((string)value));
                case StorageType.SqlChars:
                    return new SqlChars(((string)value).ToCharArray());
                case StorageType.SqlDateTime:
                    return new SqlDateTime(XmlConvert.ToDateTime((string)value, XmlDateTimeSerializationMode.RoundtripKind));
                case StorageType.SqlDecimal:
                    return SqlDecimal.Parse((string)value); // parses invariant format and is larger has larger range then Decimal
                case StorageType.SqlDouble:
                    return new SqlDouble(XmlConvert.ToDouble((string)value));
                case StorageType.SqlGuid:
                    return new SqlGuid(XmlConvert.ToGuid((string)value));
                case StorageType.SqlInt16:
                    return new SqlInt16(XmlConvert.ToInt16((string)value));
                case StorageType.SqlInt32:
                    return new SqlInt32(XmlConvert.ToInt32((string)value));
                case StorageType.SqlInt64:
                    return new SqlInt64(XmlConvert.ToInt64((string)value));
                case StorageType.SqlMoney:
                    return new SqlMoney(XmlConvert.ToDecimal((string)value));
                case StorageType.SqlSingle:
                    return new SqlSingle(XmlConvert.ToSingle((string)value));
                case StorageType.SqlString:
                    return new SqlString((string)value);
                //                case StorageType.SqlXml: // What to do
                //                    if (DataStorage.IsObjectNull(value)) {
                //                        return SqlXml.Null;
                //                    }
                //                    goto default;
                case StorageType.Boolean:
                    if ("1" == (string)value) return true;
                    if ("0" == (string)value) return false;
                    return XmlConvert.ToBoolean((string)value);
                case StorageType.Char:
                    return XmlConvert.ToChar((string)value);
                case StorageType.SByte:
                    return XmlConvert.ToSByte((string)value);
                case StorageType.Byte:
                    return XmlConvert.ToByte((string)value);
                case StorageType.Int16:
                    return XmlConvert.ToInt16((string)value);
                case StorageType.UInt16:
                    return XmlConvert.ToUInt16((string)value);
                case StorageType.Int32:
                    return XmlConvert.ToInt32((string)value);
                case StorageType.UInt32:
                    return XmlConvert.ToUInt32((string)value);
                case StorageType.Int64:
                    return XmlConvert.ToInt64((string)value);
                case StorageType.UInt64:
                    return XmlConvert.ToUInt64((string)value);
                case StorageType.Single:
                    return XmlConvert.ToSingle((string)value);
                case StorageType.Double:
                    return XmlConvert.ToDouble((string)value);
                case StorageType.Decimal:
                    return XmlConvert.ToDecimal((string)value);
                case StorageType.DateTime:
                    return XmlConvert.ToDateTime((string)value, XmlDateTimeSerializationMode.RoundtripKind);
                case StorageType.Guid:
                    return XmlConvert.ToGuid((string)value);
                case StorageType.Uri:
                    return new Uri((string)value);
                case StorageType.DateTimeOffset:
                    return XmlConvert.ToDateTimeOffset((string)value);
                case StorageType.TimeSpan:
                    switch (vtype)
                    {
                        case StorageType.String:
                            return XmlConvert.ToTimeSpan((string)value);
                        case StorageType.Int32:
                            return new TimeSpan((int)value);
                        case StorageType.Int64:
                            return new TimeSpan((long)value);
                        default:
                            return (TimeSpan)value;
                    }
                default:
                    {
                        if ((DBNull.Value == value) || (null == value))
                        {
                            return DBNull.Value;
                        }

                        switch (vtype)
                        { // To String
                            case StorageType.SqlBinary:
                                return Convert.ToBase64String(((SqlBinary)value).Value);
                            case StorageType.SqlBoolean:
                                return XmlConvert.ToString(((SqlBoolean)value).Value);
                            case StorageType.SqlByte:
                                return XmlConvert.ToString(((SqlByte)value).Value);
                            case StorageType.SqlBytes:
                                return Convert.ToBase64String(((SqlBytes)value).Value);
                            case StorageType.SqlChars:
                                return new string(((SqlChars)value).Value);
                            case StorageType.SqlDateTime:
                                return XmlConvert.ToString(((SqlDateTime)value).Value, XmlDateTimeSerializationMode.RoundtripKind);
                            case StorageType.SqlDecimal:
                                return ((SqlDecimal)value).ToString(); // converts using invariant format and is larger has larger range then Decimal
                            case StorageType.SqlDouble:
                                return XmlConvert.ToString(((SqlDouble)value).Value);
                            case StorageType.SqlGuid:
                                return XmlConvert.ToString(((SqlGuid)value).Value);
                            case StorageType.SqlInt16:
                                return XmlConvert.ToString(((SqlInt16)value).Value);
                            case StorageType.SqlInt32:
                                return XmlConvert.ToString(((SqlInt32)value).Value);
                            case StorageType.SqlInt64:
                                return XmlConvert.ToString(((SqlInt64)value).Value);
                            case StorageType.SqlMoney:
                                return XmlConvert.ToString(((SqlMoney)value).Value);
                            case StorageType.SqlSingle:
                                return XmlConvert.ToString(((SqlSingle)value).Value);
                            case StorageType.SqlString:
                                return ((SqlString)value).Value;
                            case StorageType.Boolean:
                                return XmlConvert.ToString((bool)value);
                            case StorageType.Char:
                                return XmlConvert.ToString((char)value);
                            case StorageType.SByte:
                                return XmlConvert.ToString((sbyte)value);
                            case StorageType.Byte:
                                return XmlConvert.ToString((byte)value);
                            case StorageType.Int16:
                                return XmlConvert.ToString((short)value);
                            case StorageType.UInt16:
                                return XmlConvert.ToString((ushort)value);
                            case StorageType.Int32:
                                return XmlConvert.ToString((int)value);
                            case StorageType.UInt32:
                                return XmlConvert.ToString((uint)value);
                            case StorageType.Int64:
                                return XmlConvert.ToString((long)value);
                            case StorageType.UInt64:
                                return XmlConvert.ToString((ulong)value);
                            case StorageType.Single:
                                return XmlConvert.ToString((float)value);
                            case StorageType.Double:
                                return XmlConvert.ToString((double)value);
                            case StorageType.Decimal:
                                return XmlConvert.ToString((decimal)value);
                            case StorageType.DateTime:
                                return XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.RoundtripKind);
                            case StorageType.TimeSpan:
                                return XmlConvert.ToString((TimeSpan)value);
                            case StorageType.Guid:
                                return XmlConvert.ToString((Guid)value);
                            case StorageType.String:
                                return (string)value;
                            case StorageType.CharArray:
                                return new string((char[])value);
                            case StorageType.DateTimeOffset:
                                return XmlConvert.ToString((DateTimeOffset)value);
                            default:
                                IConvertible iconvertible = (value as IConvertible);
                                if (null != iconvertible)
                                {
                                    return iconvertible.ToString(System.Globalization.CultureInfo.InvariantCulture);
                                }
                                // catch additional classes like Guid
                                IFormattable iformattable = (value as IFormattable);
                                if (null != iformattable)
                                {
                                    return iformattable.ToString(null, System.Globalization.CultureInfo.InvariantCulture);
                                }
                                return value.ToString();
                        }
                    }
            }
        }
    }

Usage Example

Esempio n. 1
0
        public override string ConvertObjectToXml(object value)
        {
            if ((value == null) || (value == _nullValue))// this case won't happen,  this is added in case if code in xml saver changes
            {
                return(string.Empty);
            }

            Type type = _dataType;

            if (type == typeof(byte[]) || (type == typeof(object) && (value is byte[])))
            {
                return(Convert.ToBase64String((byte[])value));
            }
            if ((type == typeof(Type)) || ((type == typeof(object)) && (value is Type)))
            {
                return(((Type)value).AssemblyQualifiedName !);
            }

            if (!IsTypeCustomType(value.GetType()))
            { // Guid and Type had TypeCode.Object
                return((string)SqlConvert.ChangeTypeForXML(value, typeof(string)));
            }

            if (Type.GetTypeCode(value.GetType()) != TypeCode.Object)
            {
                return(value.ToString() !);
            }

            StringWriter strwriter = new StringWriter(FormatProvider);

            if (_implementsIXmlSerializable)
            {
                using (XmlTextWriter xmlTextWriter = new XmlTextWriter(strwriter))
                {
                    ((IXmlSerializable)value).WriteXml(xmlTextWriter);
                }
                return(strwriter.ToString());
            }

            XmlSerializer serializerWithOutRootAttribute = ObjectStorage.GetXmlSerializer(value.GetType());

            serializerWithOutRootAttribute.Serialize(strwriter, value);
            return(strwriter.ToString());
        }
All Usage Examples Of System.Data.Common.SqlConvert::ChangeTypeForXML