private object ChangeTypeWildcardSource(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
 {
     if (destinationType == XmlBaseConverter.ByteType)
     {
         return(XmlBaseConverter.Int32ToByte(this.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.Int16Type)
     {
         return(XmlBaseConverter.Int32ToInt16(this.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.SByteType)
     {
         return(XmlBaseConverter.Int32ToSByte(this.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.UInt16Type)
     {
         return(XmlBaseConverter.Int32ToUInt16(this.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.UInt32Type)
     {
         return(XmlBaseConverter.Int64ToUInt32(this.ToInt64(value)));
     }
     if (destinationType == XmlBaseConverter.UInt64Type)
     {
         return(XmlBaseConverter.DecimalToUInt64(this.ToDecimal(value)));
     }
     return(this.ChangeListType(value, destinationType, nsResolver));
 }
        public override long ToInt64(object value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            Type type = value.GetType();

            if (type == XmlBaseConverter.DecimalType)
            {
                return(XmlBaseConverter.DecimalToInt64((decimal)value));
            }
            if (type == XmlBaseConverter.Int32Type)
            {
                return((long)((int)value));
            }
            if (type == XmlBaseConverter.Int64Type)
            {
                return((long)value);
            }
            if (type == XmlBaseConverter.StringType)
            {
                return(this.ToInt64((string)value));
            }
            if (type == XmlBaseConverter.XmlAtomicValueType)
            {
                return(((XmlAtomicValue)value).ValueAsLong);
            }
            return((long)this.ChangeTypeWildcardDestination(value, XmlBaseConverter.Int64Type, null));
        }
        public override DateTimeOffset ToDateTimeOffset(string value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            switch (base.TypeCode)
            {
            case XmlTypeCode.Time:
                return(XmlBaseConverter.StringToTimeOffset(value));

            case XmlTypeCode.Date:
                return(XmlBaseConverter.StringToDateOffset(value));

            case XmlTypeCode.GYearMonth:
                return(XmlBaseConverter.StringToGYearMonthOffset(value));

            case XmlTypeCode.GYear:
                return(XmlBaseConverter.StringToGYearOffset(value));

            case XmlTypeCode.GMonthDay:
                return(XmlBaseConverter.StringToGMonthDayOffset(value));

            case XmlTypeCode.GDay:
                return(XmlBaseConverter.StringToGDayOffset(value));

            case XmlTypeCode.GMonth:
                return(XmlBaseConverter.StringToGMonthOffset(value));
            }
            return(XmlBaseConverter.StringToDateTimeOffset(value));
        }
        public override string ToString(DateTimeOffset value)
        {
            switch (base.TypeCode)
            {
            case XmlTypeCode.Time:
                return(XmlBaseConverter.TimeOffsetToString(value));

            case XmlTypeCode.Date:
                return(XmlBaseConverter.DateOffsetToString(value));

            case XmlTypeCode.GYearMonth:
                return(XmlBaseConverter.GYearMonthOffsetToString(value));

            case XmlTypeCode.GYear:
                return(XmlBaseConverter.GYearOffsetToString(value));

            case XmlTypeCode.GMonthDay:
                return(XmlBaseConverter.GMonthDayOffsetToString(value));

            case XmlTypeCode.GDay:
                return(XmlBaseConverter.GDayOffsetToString(value));

            case XmlTypeCode.GMonth:
                return(XmlBaseConverter.GMonthOffsetToString(value));
            }
            return(XmlBaseConverter.DateTimeOffsetToString(value));
        }
Пример #5
0
        public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }
            Type derivedType = value.GetType();

            if (destinationType == XmlBaseConverter.ObjectType)
            {
                destinationType = base.DefaultClrType;
            }
            if ((destinationType == XmlBaseConverter.XPathNavigatorType) && XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XPathNavigatorType))
            {
                return((XPathNavigator)value);
            }
            if ((destinationType == XmlBaseConverter.XPathItemType) && XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XPathNavigatorType))
            {
                return((XPathItem)value);
            }
            return(this.ChangeListType(value, destinationType, nsResolver));
        }
 public override DateTimeOffset ToDateTimeOffset(string value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     return(XmlBaseConverter.UntypedAtomicToDateTimeOffset(value));
 }
Пример #7
0
        public override string ToString(object value, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            Type derivedType = value.GetType();

            if (derivedType == XmlBaseConverter.ByteArrayType)
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.HexBinary:
                    return(XmlConvert.ToBinHexString((byte[])value));

                case XmlTypeCode.Base64Binary:
                    return(XmlBaseConverter.Base64BinaryToString((byte[])value));
                }
            }
            if (derivedType == XmlBaseConverter.StringType)
            {
                return((string)value);
            }
            if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.UriType) && (base.TypeCode == XmlTypeCode.AnyUri))
            {
                return(XmlBaseConverter.AnyUriToString((Uri)value));
            }
            if (derivedType == XmlBaseConverter.TimeSpanType)
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.YearMonthDuration:
                    return(XmlBaseConverter.YearMonthDurationToString((TimeSpan)value));

                case XmlTypeCode.DayTimeDuration:
                    return(XmlBaseConverter.DayTimeDurationToString((TimeSpan)value));

                case XmlTypeCode.Duration:
                    return(XmlBaseConverter.DurationToString((TimeSpan)value));
                }
            }
            if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XmlQualifiedNameType))
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.QName:
                    return(XmlBaseConverter.QNameToString((XmlQualifiedName)value, nsResolver));

                case XmlTypeCode.Notation:
                    return(XmlBaseConverter.QNameToString((XmlQualifiedName)value, nsResolver));
                }
            }
            return((string)this.ChangeTypeWildcardDestination(value, XmlBaseConverter.StringType, nsResolver));
        }
 public override DateTimeOffset ToDateTimeOffset(object value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     if (value.GetType() == XmlBaseConverter.StringType)
     {
         return(XmlBaseConverter.UntypedAtomicToDateTimeOffset((string)value));
     }
     return((DateTimeOffset)this.ChangeTypeWildcardDestination(value, XmlBaseConverter.DateTimeOffsetType, null));
 }
 public override long ToInt64(string value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     if (base.TypeCode == XmlTypeCode.Decimal)
     {
         return(XmlBaseConverter.DecimalToInt64(XmlConvert.ToDecimal(value)));
     }
     return(XmlConvert.ToInt64(value));
 }
Пример #10
0
 internal void CompileFractionDigitsFacet(XmlSchemaFacet facet)
 {
     this.CheckProhibitedFlag(facet, RestrictionFlags.FractionDigits, "Sch_FractionDigitsFacetProhibited");
     this.CheckDupFlag(facet, RestrictionFlags.FractionDigits, "Sch_DupFractionDigitsFacet");
     this.derivedRestriction.FractionDigits = XmlBaseConverter.DecimalToInt32((decimal)this.ParseFacetValue(this.nonNegativeInt, facet, "Sch_FractionDigitsFacetInvalid", null, null));
     if ((this.derivedRestriction.FractionDigits != 0) && (this.datatype.TypeCode != XmlTypeCode.Decimal))
     {
         throw new XmlSchemaException("Sch_FractionDigitsFacetInvalid", Res.GetString("Sch_FractionDigitsNotOnDecimal"), facet);
     }
     if (((this.baseFlags & RestrictionFlags.FractionDigits) != 0) && (this.derivedRestriction.FractionDigits > this.datatype.Restriction.FractionDigits))
     {
         throw new XmlSchemaException("Sch_TotalDigitsMismatch", string.Empty);
     }
     this.SetFlag(facet, RestrictionFlags.FractionDigits);
 }
 public override object ChangeType(DateTimeOffset value, Type destinationType)
 {
     if (destinationType == null)
     {
         throw new ArgumentNullException("destinationType");
     }
     if (destinationType == XmlBaseConverter.ObjectType)
     {
         destinationType = base.DefaultClrType;
     }
     if (destinationType == XmlBaseConverter.StringType)
     {
         return(XmlBaseConverter.DateTimeOffsetToString(value));
     }
     return(this.ChangeTypeWildcardSource(value, destinationType, null));
 }
Пример #12
0
            internal void CompileTotalDigitsFacet(XmlSchemaFacet facet)
            {
                this.CheckProhibitedFlag(facet, RestrictionFlags.TotalDigits, "Sch_TotalDigitsFacetProhibited");
                this.CheckDupFlag(facet, RestrictionFlags.TotalDigits, "Sch_DupTotalDigitsFacet");
                XmlSchemaDatatype datatype = DatatypeImplementation.GetSimpleTypeFromTypeCode(XmlTypeCode.PositiveInteger).Datatype;

                this.derivedRestriction.TotalDigits = XmlBaseConverter.DecimalToInt32((decimal)this.ParseFacetValue(datatype, facet, "Sch_TotalDigitsFacetInvalid", null, null));
                if (((this.baseFixedFlags & RestrictionFlags.TotalDigits) != 0) && !this.datatype.IsEqual(this.datatype.Restriction.TotalDigits, this.derivedRestriction.TotalDigits))
                {
                    throw new XmlSchemaException("Sch_FacetBaseFixed", facet);
                }
                if (((this.baseFlags & RestrictionFlags.TotalDigits) != 0) && (this.derivedRestriction.TotalDigits > this.datatype.Restriction.TotalDigits))
                {
                    throw new XmlSchemaException("Sch_TotalDigitsMismatch", string.Empty);
                }
                this.SetFlag(facet, RestrictionFlags.TotalDigits);
            }
Пример #13
0
 internal void CompileMaxLengthFacet(XmlSchemaFacet facet)
 {
     this.CheckProhibitedFlag(facet, RestrictionFlags.MaxLength, "Sch_MaxLengthFacetProhibited");
     this.CheckDupFlag(facet, RestrictionFlags.MaxLength, "Sch_DupMaxLengthFacet");
     this.derivedRestriction.MaxLength = XmlBaseConverter.DecimalToInt32((decimal)this.ParseFacetValue(this.nonNegativeInt, facet, "Sch_MaxLengthFacetInvalid", null, null));
     if (((this.baseFixedFlags & RestrictionFlags.MaxLength) != 0) && !this.datatype.IsEqual(this.datatype.Restriction.MaxLength, this.derivedRestriction.MaxLength))
     {
         throw new XmlSchemaException("Sch_FacetBaseFixed", facet);
     }
     if (((this.baseFlags & RestrictionFlags.MaxLength) != 0) && (this.datatype.Restriction.MaxLength < this.derivedRestriction.MaxLength))
     {
         throw new XmlSchemaException("Sch_MaxLengthGtBaseMaxLength", facet);
     }
     if (((this.baseFlags & RestrictionFlags.Length) != 0) && (this.datatype.Restriction.Length > this.derivedRestriction.MaxLength))
     {
         throw new XmlSchemaException("Sch_MaxMinLengthBaseLength", facet);
     }
     this.SetFlag(facet, RestrictionFlags.MaxLength);
 }
 public override object ChangeType(long value, Type destinationType)
 {
     if (destinationType == null)
     {
         throw new ArgumentNullException("destinationType");
     }
     if (destinationType == XmlBaseConverter.ObjectType)
     {
         destinationType = base.DefaultClrType;
     }
     if (destinationType == XmlBaseConverter.DecimalType)
     {
         return((decimal)value);
     }
     if (destinationType == XmlBaseConverter.Int32Type)
     {
         return(XmlBaseConverter.Int64ToInt32(value));
     }
     if (destinationType == XmlBaseConverter.Int64Type)
     {
         return(value);
     }
     if (destinationType == XmlBaseConverter.StringType)
     {
         return(XmlConvert.ToString(value));
     }
     if (destinationType == XmlBaseConverter.XmlAtomicValueType)
     {
         return(new XmlAtomicValue(base.SchemaType, value));
     }
     if (destinationType == XmlBaseConverter.XPathItemType)
     {
         return(new XmlAtomicValue(base.SchemaType, value));
     }
     return(this.ChangeTypeWildcardSource(value, destinationType, null));
 }
 public override long ToInt64(decimal value)
 {
     return(XmlBaseConverter.DecimalToInt64(value));
 }
Пример #16
0
        public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }
            if (destinationType == XmlBaseConverter.ObjectType)
            {
                destinationType = base.DefaultClrType;
            }
            if (destinationType == XmlBaseConverter.ByteArrayType)
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.HexBinary:
                    return(XmlBaseConverter.StringToHexBinary(value));

                case XmlTypeCode.Base64Binary:
                    return(XmlBaseConverter.StringToBase64Binary(value));
                }
            }
            if (destinationType == XmlBaseConverter.XmlQualifiedNameType)
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.QName:
                    return(XmlBaseConverter.StringToQName(value, nsResolver));

                case XmlTypeCode.Notation:
                    return(XmlBaseConverter.StringToQName(value, nsResolver));
                }
            }
            if (destinationType == XmlBaseConverter.StringType)
            {
                return(value);
            }
            if (destinationType == XmlBaseConverter.TimeSpanType)
            {
                switch (base.TypeCode)
                {
                case XmlTypeCode.YearMonthDuration:
                    return(XmlBaseConverter.StringToYearMonthDuration(value));

                case XmlTypeCode.DayTimeDuration:
                    return(XmlBaseConverter.StringToDayTimeDuration(value));

                case XmlTypeCode.Duration:
                    return(XmlBaseConverter.StringToDuration(value));
                }
            }
            if ((destinationType == XmlBaseConverter.UriType) && (base.TypeCode == XmlTypeCode.AnyUri))
            {
                return(XmlConvert.ToUri(value));
            }
            if (destinationType == XmlBaseConverter.XmlAtomicValueType)
            {
                return(new XmlAtomicValue(base.SchemaType, value, nsResolver));
            }
            return(this.ChangeTypeWildcardSource(value, destinationType, nsResolver));
        }
Пример #17
0
        public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }
            Type derivedType = value.GetType();

            if (destinationType == XmlBaseConverter.ObjectType)
            {
                destinationType = base.DefaultClrType;
            }
            if (destinationType == XmlBaseConverter.ByteArrayType)
            {
                if (derivedType == XmlBaseConverter.ByteArrayType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.HexBinary:
                        return((byte[])value);

                    case XmlTypeCode.Base64Binary:
                        return((byte[])value);
                    }
                }
                if (derivedType == XmlBaseConverter.StringType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.HexBinary:
                        return(XmlBaseConverter.StringToHexBinary((string)value));

                    case XmlTypeCode.Base64Binary:
                        return(XmlBaseConverter.StringToBase64Binary((string)value));
                    }
                }
            }
            if (destinationType == XmlBaseConverter.XmlQualifiedNameType)
            {
                if (derivedType == XmlBaseConverter.StringType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.QName:
                        return(XmlBaseConverter.StringToQName((string)value, nsResolver));

                    case XmlTypeCode.Notation:
                        return(XmlBaseConverter.StringToQName((string)value, nsResolver));
                    }
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XmlQualifiedNameType))
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.QName:
                        return((XmlQualifiedName)value);

                    case XmlTypeCode.Notation:
                        return((XmlQualifiedName)value);
                    }
                }
            }
            if (destinationType == XmlBaseConverter.StringType)
            {
                return(this.ToString(value, nsResolver));
            }
            if (destinationType == XmlBaseConverter.TimeSpanType)
            {
                if (derivedType == XmlBaseConverter.StringType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.YearMonthDuration:
                        return(XmlBaseConverter.StringToYearMonthDuration((string)value));

                    case XmlTypeCode.DayTimeDuration:
                        return(XmlBaseConverter.StringToDayTimeDuration((string)value));

                    case XmlTypeCode.Duration:
                        return(XmlBaseConverter.StringToDuration((string)value));
                    }
                }
                if (derivedType == XmlBaseConverter.TimeSpanType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.YearMonthDuration:
                        return((TimeSpan)value);

                    case XmlTypeCode.DayTimeDuration:
                        return((TimeSpan)value);

                    case XmlTypeCode.Duration:
                        return((TimeSpan)value);
                    }
                }
            }
            if (destinationType == XmlBaseConverter.UriType)
            {
                if ((derivedType == XmlBaseConverter.StringType) && (base.TypeCode == XmlTypeCode.AnyUri))
                {
                    return(XmlConvert.ToUri((string)value));
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.UriType) && (base.TypeCode == XmlTypeCode.AnyUri))
                {
                    return((Uri)value);
                }
            }
            if (destinationType == XmlBaseConverter.XmlAtomicValueType)
            {
                if (derivedType == XmlBaseConverter.ByteArrayType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.HexBinary:
                        return(new XmlAtomicValue(base.SchemaType, value));

                    case XmlTypeCode.Base64Binary:
                        return(new XmlAtomicValue(base.SchemaType, value));
                    }
                }
                if (derivedType == XmlBaseConverter.StringType)
                {
                    return(new XmlAtomicValue(base.SchemaType, (string)value, nsResolver));
                }
                if (derivedType == XmlBaseConverter.TimeSpanType)
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.YearMonthDuration:
                        return(new XmlAtomicValue(base.SchemaType, value));

                    case XmlTypeCode.DayTimeDuration:
                        return(new XmlAtomicValue(base.SchemaType, value));

                    case XmlTypeCode.Duration:
                        return(new XmlAtomicValue(base.SchemaType, value));
                    }
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.UriType) && (base.TypeCode == XmlTypeCode.AnyUri))
                {
                    return(new XmlAtomicValue(base.SchemaType, value));
                }
                if (derivedType == XmlBaseConverter.XmlAtomicValueType)
                {
                    return((XmlAtomicValue)value);
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XmlQualifiedNameType))
                {
                    switch (base.TypeCode)
                    {
                    case XmlTypeCode.QName:
                        return(new XmlAtomicValue(base.SchemaType, value, nsResolver));

                    case XmlTypeCode.Notation:
                        return(new XmlAtomicValue(base.SchemaType, value, nsResolver));
                    }
                }
            }
            if ((destinationType == XmlBaseConverter.XPathItemType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return((XmlAtomicValue)value);
            }
            if (destinationType == XmlBaseConverter.XPathItemType)
            {
                return((XPathItem)this.ChangeType(value, XmlBaseConverter.XmlAtomicValueType, nsResolver));
            }
            if (derivedType == XmlBaseConverter.XmlAtomicValueType)
            {
                return(((XmlAtomicValue)value).ValueAs(destinationType, nsResolver));
            }
            return(this.ChangeListType(value, destinationType, nsResolver));
        }
 protected XmlListConverter(XmlBaseConverter atomicConverter, Type clrTypeDefault) : base(atomicConverter, clrTypeDefault)
 {
     this.atomicConverter = atomicConverter;
 }
Пример #19
0
 protected XmlBaseConverter(XmlBaseConverter converterAtomic, Type clrTypeDefault)
 {
     this.schemaType     = converterAtomic.schemaType;
     this.typeCode       = converterAtomic.typeCode;
     this.clrTypeDefault = clrTypeDefault;
 }
 public override int ToInt32(decimal value)
 {
     return(XmlBaseConverter.DecimalToInt32(value));
 }
 protected XmlBaseConverter(XmlBaseConverter converterAtomic, Type clrTypeDefault)
 {
     this.schemaType = converterAtomic.schemaType;
     this.typeCode = converterAtomic.typeCode;
     this.clrTypeDefault = clrTypeDefault;
 }
 protected XmlBaseConverter(XmlBaseConverter converterAtomic)
 {
     this.schemaType = converterAtomic.schemaType;
     this.typeCode = converterAtomic.typeCode;
     this.clrTypeDefault = Array.CreateInstance(converterAtomic.DefaultClrType, 0).GetType();
 }
 protected XmlAnyListConverter(XmlBaseConverter atomicConverter) : base(atomicConverter)
 {
 }
        public override string ToString(object value, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            Type derivedType = value.GetType();

            if (derivedType == XmlBaseConverter.BooleanType)
            {
                return(XmlConvert.ToString((bool)value));
            }
            if (derivedType == XmlBaseConverter.ByteType)
            {
                return(XmlConvert.ToString((byte)value));
            }
            if (derivedType == XmlBaseConverter.ByteArrayType)
            {
                return(XmlBaseConverter.Base64BinaryToString((byte[])value));
            }
            if (derivedType == XmlBaseConverter.DateTimeType)
            {
                return(XmlBaseConverter.DateTimeToString((DateTime)value));
            }
            if (derivedType == XmlBaseConverter.DateTimeOffsetType)
            {
                return(XmlBaseConverter.DateTimeOffsetToString((DateTimeOffset)value));
            }
            if (derivedType == XmlBaseConverter.DecimalType)
            {
                return(XmlConvert.ToString((decimal)value));
            }
            if (derivedType == XmlBaseConverter.DoubleType)
            {
                return(XmlConvert.ToString((double)value));
            }
            if (derivedType == XmlBaseConverter.Int16Type)
            {
                return(XmlConvert.ToString((short)value));
            }
            if (derivedType == XmlBaseConverter.Int32Type)
            {
                return(XmlConvert.ToString((int)value));
            }
            if (derivedType == XmlBaseConverter.Int64Type)
            {
                return(XmlConvert.ToString((long)value));
            }
            if (derivedType == XmlBaseConverter.SByteType)
            {
                return(XmlConvert.ToString((sbyte)value));
            }
            if (derivedType == XmlBaseConverter.SingleType)
            {
                return(XmlConvert.ToString((float)value));
            }
            if (derivedType == XmlBaseConverter.StringType)
            {
                return((string)value);
            }
            if (derivedType == XmlBaseConverter.TimeSpanType)
            {
                return(XmlBaseConverter.DurationToString((TimeSpan)value));
            }
            if (derivedType == XmlBaseConverter.UInt16Type)
            {
                return(XmlConvert.ToString((ushort)value));
            }
            if (derivedType == XmlBaseConverter.UInt32Type)
            {
                return(XmlConvert.ToString((uint)value));
            }
            if (derivedType == XmlBaseConverter.UInt64Type)
            {
                return(XmlConvert.ToString((ulong)value));
            }
            if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.UriType))
            {
                return(XmlBaseConverter.AnyUriToString((Uri)value));
            }
            if (derivedType == XmlBaseConverter.XmlAtomicValueType)
            {
                return((string)((XmlAtomicValue)value).ValueAs(XmlBaseConverter.StringType, nsResolver));
            }
            if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XmlQualifiedNameType))
            {
                return(XmlBaseConverter.QNameToString((XmlQualifiedName)value, nsResolver));
            }
            return((string)this.ChangeTypeWildcardDestination(value, XmlBaseConverter.StringType, nsResolver));
        }
 public override string ToString(DateTimeOffset value)
 {
     return(XmlBaseConverter.DateTimeOffsetToString(value));
 }
 public override DateTime ToDateTime(DateTimeOffset value)
 {
     return(XmlBaseConverter.DateTimeOffsetToDateTime(value));
 }
Пример #27
0
        public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }
            Type derivedType = value.GetType();

            if (destinationType == XmlBaseConverter.ObjectType)
            {
                destinationType = base.DefaultClrType;
            }
            if ((destinationType == XmlBaseConverter.BooleanType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAsBoolean);
            }
            if ((destinationType == XmlBaseConverter.DateTimeType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAsDateTime);
            }
            if ((destinationType == XmlBaseConverter.DateTimeOffsetType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAs(XmlBaseConverter.DateTimeOffsetType));
            }
            if ((destinationType == XmlBaseConverter.DecimalType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return((decimal)((XmlAtomicValue)value).ValueAs(XmlBaseConverter.DecimalType));
            }
            if ((destinationType == XmlBaseConverter.DoubleType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAsDouble);
            }
            if ((destinationType == XmlBaseConverter.Int32Type) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAsInt);
            }
            if ((destinationType == XmlBaseConverter.Int64Type) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return(((XmlAtomicValue)value).ValueAsLong);
            }
            if ((destinationType == XmlBaseConverter.SingleType) && (derivedType == XmlBaseConverter.XmlAtomicValueType))
            {
                return((float)((XmlAtomicValue)value).ValueAs(XmlBaseConverter.SingleType));
            }
            if (destinationType == XmlBaseConverter.XmlAtomicValueType)
            {
                if (derivedType == XmlBaseConverter.XmlAtomicValueType)
                {
                    return((XmlAtomicValue)value);
                }
                if (derivedType == XmlBaseConverter.BooleanType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Boolean), (bool)value));
                }
                if (derivedType == XmlBaseConverter.ByteType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.UnsignedByte), value));
                }
                if (derivedType == XmlBaseConverter.ByteArrayType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Base64Binary), value));
                }
                if (derivedType == XmlBaseConverter.DateTimeType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.DateTime), (DateTime)value));
                }
                if (derivedType == XmlBaseConverter.DateTimeOffsetType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.DateTime), (DateTimeOffset)value));
                }
                if (derivedType == XmlBaseConverter.DecimalType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Decimal), value));
                }
                if (derivedType == XmlBaseConverter.DoubleType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Double), (double)value));
                }
                if (derivedType == XmlBaseConverter.Int16Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Short), value));
                }
                if (derivedType == XmlBaseConverter.Int32Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Int), (int)value));
                }
                if (derivedType == XmlBaseConverter.Int64Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Long), (long)value));
                }
                if (derivedType == XmlBaseConverter.SByteType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Byte), value));
                }
                if (derivedType == XmlBaseConverter.SingleType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Float), value));
                }
                if (derivedType == XmlBaseConverter.StringType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.String), (string)value));
                }
                if (derivedType == XmlBaseConverter.TimeSpanType)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.Duration), value));
                }
                if (derivedType == XmlBaseConverter.UInt16Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.UnsignedShort), value));
                }
                if (derivedType == XmlBaseConverter.UInt32Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.UnsignedInt), value));
                }
                if (derivedType == XmlBaseConverter.UInt64Type)
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.UnsignedLong), value));
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.UriType))
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.AnyUri), value));
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XmlQualifiedNameType))
                {
                    return(new XmlAtomicValue(XmlSchemaType.GetBuiltInSimpleType(XmlTypeCode.QName), value, nsResolver));
                }
            }
            if (destinationType == XmlBaseConverter.XPathItemType)
            {
                if (derivedType == XmlBaseConverter.XmlAtomicValueType)
                {
                    return((XmlAtomicValue)value);
                }
                if (XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XPathNavigatorType))
                {
                    return((XPathNavigator)value);
                }
            }
            if ((destinationType == XmlBaseConverter.XPathNavigatorType) && XmlBaseConverter.IsDerivedFrom(derivedType, XmlBaseConverter.XPathNavigatorType))
            {
                return(this.ToNavigator((XPathNavigator)value));
            }
            if (destinationType == XmlBaseConverter.XPathItemType)
            {
                return((XPathItem)this.ChangeType(value, XmlBaseConverter.XmlAtomicValueType, nsResolver));
            }
            if (derivedType == XmlBaseConverter.XmlAtomicValueType)
            {
                return(((XmlAtomicValue)value).ValueAs(destinationType, nsResolver));
            }
            return(this.ChangeListType(value, destinationType, nsResolver));
        }
 public override int ToInt32(long value)
 {
     return(XmlBaseConverter.Int64ToInt32(value));
 }
 protected XmlAnyListConverter(XmlBaseConverter atomicConverter) : base(atomicConverter)
 {
 }
Пример #30
0
 protected XmlBaseConverter(XmlBaseConverter converterAtomic)
 {
     this.schemaType     = converterAtomic.schemaType;
     this.typeCode       = converterAtomic.typeCode;
     this.clrTypeDefault = Array.CreateInstance(converterAtomic.DefaultClrType, 0).GetType();
 }
 protected XmlListConverter(XmlBaseConverter atomicConverter) : base(atomicConverter)
 {
     this.atomicConverter = atomicConverter;
 }
        public override object ChangeType(object value, Type destinationType, IXmlNamespaceResolver nsResolver)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }
            Type type = value.GetType();

            if (destinationType == XmlBaseConverter.ObjectType)
            {
                destinationType = base.DefaultClrType;
            }
            if (destinationType == XmlBaseConverter.DecimalType)
            {
                return(this.ToDecimal(value));
            }
            if (destinationType == XmlBaseConverter.Int32Type)
            {
                return(this.ToInt32(value));
            }
            if (destinationType == XmlBaseConverter.Int64Type)
            {
                return(this.ToInt64(value));
            }
            if (destinationType == XmlBaseConverter.StringType)
            {
                return(this.ToString(value, nsResolver));
            }
            if (destinationType == XmlBaseConverter.XmlAtomicValueType)
            {
                if (type == XmlBaseConverter.DecimalType)
                {
                    return(new XmlAtomicValue(base.SchemaType, value));
                }
                if (type == XmlBaseConverter.Int32Type)
                {
                    return(new XmlAtomicValue(base.SchemaType, (int)value));
                }
                if (type == XmlBaseConverter.Int64Type)
                {
                    return(new XmlAtomicValue(base.SchemaType, (long)value));
                }
                if (type == XmlBaseConverter.StringType)
                {
                    return(new XmlAtomicValue(base.SchemaType, (string)value));
                }
                if (type == XmlBaseConverter.XmlAtomicValueType)
                {
                    return((XmlAtomicValue)value);
                }
            }
            if (destinationType == XmlBaseConverter.XPathItemType)
            {
                if (type == XmlBaseConverter.DecimalType)
                {
                    return(new XmlAtomicValue(base.SchemaType, value));
                }
                if (type == XmlBaseConverter.Int32Type)
                {
                    return(new XmlAtomicValue(base.SchemaType, (int)value));
                }
                if (type == XmlBaseConverter.Int64Type)
                {
                    return(new XmlAtomicValue(base.SchemaType, (long)value));
                }
                if (type == XmlBaseConverter.StringType)
                {
                    return(new XmlAtomicValue(base.SchemaType, (string)value));
                }
                if (type == XmlBaseConverter.XmlAtomicValueType)
                {
                    return((XmlAtomicValue)value);
                }
            }
            if (destinationType == XmlBaseConverter.ByteType)
            {
                return(XmlBaseConverter.Int32ToByte(this.ToInt32(value)));
            }
            if (destinationType == XmlBaseConverter.Int16Type)
            {
                return(XmlBaseConverter.Int32ToInt16(this.ToInt32(value)));
            }
            if (destinationType == XmlBaseConverter.SByteType)
            {
                return(XmlBaseConverter.Int32ToSByte(this.ToInt32(value)));
            }
            if (destinationType == XmlBaseConverter.UInt16Type)
            {
                return(XmlBaseConverter.Int32ToUInt16(this.ToInt32(value)));
            }
            if (destinationType == XmlBaseConverter.UInt32Type)
            {
                return(XmlBaseConverter.Int64ToUInt32(this.ToInt64(value)));
            }
            if (destinationType == XmlBaseConverter.UInt64Type)
            {
                return(XmlBaseConverter.DecimalToUInt64(this.ToDecimal(value)));
            }
            if (type == XmlBaseConverter.ByteType)
            {
                return(this.ChangeType((int)((byte)value), destinationType));
            }
            if (type == XmlBaseConverter.Int16Type)
            {
                return(this.ChangeType((int)((short)value), destinationType));
            }
            if (type == XmlBaseConverter.SByteType)
            {
                return(this.ChangeType((int)((sbyte)value), destinationType));
            }
            if (type == XmlBaseConverter.UInt16Type)
            {
                return(this.ChangeType((int)((ushort)value), destinationType));
            }
            if (type == XmlBaseConverter.UInt32Type)
            {
                return(this.ChangeType((long)((uint)value), destinationType));
            }
            if (type == XmlBaseConverter.UInt64Type)
            {
                return(this.ChangeType((decimal)((ulong)value), destinationType));
            }
            return(this.ChangeListType(value, destinationType, nsResolver));
        }
 public override object ChangeType(string value, Type destinationType, IXmlNamespaceResolver nsResolver)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     if (destinationType == null)
     {
         throw new ArgumentNullException("destinationType");
     }
     if (destinationType == XmlBaseConverter.ObjectType)
     {
         destinationType = base.DefaultClrType;
     }
     if (destinationType == XmlBaseConverter.BooleanType)
     {
         return(XmlConvert.ToBoolean(value));
     }
     if (destinationType == XmlBaseConverter.ByteType)
     {
         return(XmlBaseConverter.Int32ToByte(XmlConvert.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.ByteArrayType)
     {
         return(XmlBaseConverter.StringToBase64Binary(value));
     }
     if (destinationType == XmlBaseConverter.DateTimeType)
     {
         return(XmlBaseConverter.UntypedAtomicToDateTime(value));
     }
     if (destinationType == XmlBaseConverter.DateTimeOffsetType)
     {
         return(XmlBaseConverter.UntypedAtomicToDateTimeOffset(value));
     }
     if (destinationType == XmlBaseConverter.DecimalType)
     {
         return(XmlConvert.ToDecimal(value));
     }
     if (destinationType == XmlBaseConverter.DoubleType)
     {
         return(XmlConvert.ToDouble(value));
     }
     if (destinationType == XmlBaseConverter.Int16Type)
     {
         return(XmlBaseConverter.Int32ToInt16(XmlConvert.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.Int32Type)
     {
         return(XmlConvert.ToInt32(value));
     }
     if (destinationType == XmlBaseConverter.Int64Type)
     {
         return(XmlConvert.ToInt64(value));
     }
     if (destinationType == XmlBaseConverter.SByteType)
     {
         return(XmlBaseConverter.Int32ToSByte(XmlConvert.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.SingleType)
     {
         return(XmlConvert.ToSingle(value));
     }
     if (destinationType == XmlBaseConverter.TimeSpanType)
     {
         return(XmlBaseConverter.StringToDuration(value));
     }
     if (destinationType == XmlBaseConverter.UInt16Type)
     {
         return(XmlBaseConverter.Int32ToUInt16(XmlConvert.ToInt32(value)));
     }
     if (destinationType == XmlBaseConverter.UInt32Type)
     {
         return(XmlBaseConverter.Int64ToUInt32(XmlConvert.ToInt64(value)));
     }
     if (destinationType == XmlBaseConverter.UInt64Type)
     {
         return(XmlBaseConverter.DecimalToUInt64(XmlConvert.ToDecimal(value)));
     }
     if (destinationType == XmlBaseConverter.UriType)
     {
         return(XmlConvert.ToUri(value));
     }
     if (destinationType == XmlBaseConverter.XmlAtomicValueType)
     {
         return(new XmlAtomicValue(base.SchemaType, value));
     }
     if (destinationType == XmlBaseConverter.XmlQualifiedNameType)
     {
         return(XmlBaseConverter.StringToQName(value, nsResolver));
     }
     if (destinationType == XmlBaseConverter.XPathItemType)
     {
         return(new XmlAtomicValue(base.SchemaType, value));
     }
     if (destinationType == XmlBaseConverter.StringType)
     {
         return(value);
     }
     return(this.ChangeTypeWildcardSource(value, destinationType, nsResolver));
 }