protected override IDataNode ReadPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader, string dataContractName, string dataContractNamespace)
        {
            IDataNode dataNode;

            switch (_extensionDataValueType)
            {
            case null:
            case JsonGlobals.stringString:
                dataNode = new DataNode <string>(xmlReader.ReadContentAsString());
                break;

            case JsonGlobals.booleanString:
                dataNode = new DataNode <bool>(xmlReader.ReadContentAsBoolean());
                break;

            case JsonGlobals.numberString:
                dataNode = ReadNumericalPrimitiveExtensionDataValue(xmlReader);
                break;

            default:
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                          XmlObjectSerializer.CreateSerializationException(SR.Format(SR.JsonUnexpectedAttributeValue, _extensionDataValueType)));
            }

            xmlReader.ReadEndElement();
            return(dataNode);
        }
 IDataNode ReadNumericalPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader)
 {
     TypeCode type;
     object numericalValue = JsonObjectDataContract.ParseJsonNumber(xmlReader.ReadContentAsString(), out type);
     switch (type)
     {
         case TypeCode.Byte:
             return new DataNode<byte>((byte)numericalValue);
         case TypeCode.SByte:
             return new DataNode<sbyte>((sbyte)numericalValue);
         case TypeCode.Int16:
             return new DataNode<short>((short)numericalValue);
         case TypeCode.Int32:
             return new DataNode<int>((int)numericalValue);
         case TypeCode.Int64:
             return new DataNode<long>((long)numericalValue);
         case TypeCode.UInt16:
             return new DataNode<ushort>((ushort)numericalValue);
         case TypeCode.UInt32:
             return new DataNode<uint>((uint)numericalValue);
         case TypeCode.UInt64:
             return new DataNode<ulong>((ulong)numericalValue);
         case TypeCode.Single:
             return new DataNode<float>((float)numericalValue);
         case TypeCode.Double:
             return new DataNode<double>((double)numericalValue);
         case TypeCode.Decimal:
             return new DataNode<decimal>((decimal)numericalValue);
         default:
             throw Fx.AssertAndThrow("JsonObjectDataContract.ParseJsonNumber shouldn't return a TypeCode that we're not expecting");
     }
 }
        protected override IDataNode ReadPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader, string dataContractName, string dataContractNamespace)
        {
            IDataNode node;
            string    str;

            if (((str = this.extensionDataValueType) != null) && !(str == "string"))
            {
                if (str != "boolean")
                {
                    if (str != "number")
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(XmlObjectSerializer.CreateSerializationException(System.Runtime.Serialization.SR.GetString("JsonUnexpectedAttributeValue", new object[] { this.extensionDataValueType })));
                    }
                    node = this.ReadNumericalPrimitiveExtensionDataValue(xmlReader);
                }
                else
                {
                    node = new DataNode <bool>(xmlReader.ReadContentAsBoolean());
                }
            }
            else
            {
                node = new DataNode <string>(xmlReader.ReadContentAsString());
            }
            xmlReader.ReadEndElement();
            return(node);
        }
        private IDataNode ReadNumericalPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader)
        {
            TypeCode type;
            object   numericalValue = JsonObjectDataContract.ParseJsonNumber(xmlReader.ReadContentAsString(), out type);

            switch (type)
            {
            case TypeCode.Byte:
                return(new DataNode <byte>((byte)numericalValue));

            case TypeCode.SByte:
                return(new DataNode <sbyte>((sbyte)numericalValue));

            case TypeCode.Int16:
                return(new DataNode <short>((short)numericalValue));

            case TypeCode.Int32:
                return(new DataNode <int>((int)numericalValue));

            case TypeCode.Int64:
                return(new DataNode <long>((long)numericalValue));

            case TypeCode.UInt16:
                return(new DataNode <ushort>((ushort)numericalValue));

            case TypeCode.UInt32:
                return(new DataNode <uint>((uint)numericalValue));

            case TypeCode.UInt64:
                return(new DataNode <ulong>((ulong)numericalValue));

            case TypeCode.Single:
                return(new DataNode <float>((float)numericalValue));

            case TypeCode.Double:
                return(new DataNode <double>((double)numericalValue));

            case TypeCode.Decimal:
                return(new DataNode <decimal>((decimal)numericalValue));

            default:
                throw new InvalidOperationException(SR.ParseJsonNumberReturnInvalidNumber);
            }
        }
コード例 #5
0
        IDataNode ReadNumericalPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader)
        {
            TypeCode type;
            object   numericalValue = JsonObjectDataContract.ParseJsonNumber(xmlReader.ReadContentAsString(), out type);

            switch (type)
            {
            case TypeCode.Byte:
                return(new DataNode <byte>((byte)numericalValue));

            case TypeCode.SByte:
                return(new DataNode <sbyte>((sbyte)numericalValue));

            case TypeCode.Int16:
                return(new DataNode <short>((short)numericalValue));

            case TypeCode.Int32:
                return(new DataNode <int>((int)numericalValue));

            case TypeCode.Int64:
                return(new DataNode <long>((long)numericalValue));

            case TypeCode.UInt16:
                return(new DataNode <ushort>((ushort)numericalValue));

            case TypeCode.UInt32:
                return(new DataNode <uint>((uint)numericalValue));

            case TypeCode.UInt64:
                return(new DataNode <ulong>((ulong)numericalValue));

            case TypeCode.Single:
                return(new DataNode <float>((float)numericalValue));

            case TypeCode.Double:
                return(new DataNode <double>((double)numericalValue));

            case TypeCode.Decimal:
                return(new DataNode <decimal>((decimal)numericalValue));

            default:
                throw Fx.AssertAndThrow("JsonObjectDataContract.ParseJsonNumber shouldn't return a TypeCode that we're not expecting");
            }
        }
コード例 #6
0
        private static IDataNode ReadNumericalPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader)
        {
            TypeCode type;
            object   numericalValue = JsonObjectDataContract.ParseJsonNumber(xmlReader.ReadContentAsString(), out type);

            return(type switch
            {
                TypeCode.Byte => new DataNode <byte>((byte)numericalValue),
                TypeCode.SByte => new DataNode <sbyte>((sbyte)numericalValue),
                TypeCode.Int16 => new DataNode <short>((short)numericalValue),
                TypeCode.Int32 => new DataNode <int>((int)numericalValue),
                TypeCode.Int64 => new DataNode <long>((long)numericalValue),
                TypeCode.UInt16 => new DataNode <ushort>((ushort)numericalValue),
                TypeCode.UInt32 => new DataNode <uint>((uint)numericalValue),
                TypeCode.UInt64 => new DataNode <ulong>((ulong)numericalValue),
                TypeCode.Single => new DataNode <float>((float)numericalValue),
                TypeCode.Double => new DataNode <double>((double)numericalValue),
                TypeCode.Decimal => new DataNode <decimal>((decimal)numericalValue),
                _ => throw new InvalidOperationException(SR.ParseJsonNumberReturnInvalidNumber),
            });
        protected override IDataNode ReadPrimitiveExtensionDataValue(XmlReaderDelegator xmlReader, string dataContractName, string dataContractNamespace)
        {
            IDataNode dataNode;

            switch (extensionDataValueType)
            {
                case null:
                case JsonGlobals.stringString:
                    dataNode = new DataNode<string>(xmlReader.ReadContentAsString());
                    break;
                case JsonGlobals.booleanString:
                    dataNode = new DataNode<bool>(xmlReader.ReadContentAsBoolean());
                    break;
                case JsonGlobals.numberString:
                    dataNode = ReadNumericalPrimitiveExtensionDataValue(xmlReader);
                    break;
                default:
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
                        XmlObjectSerializer.CreateSerializationException(SR.GetString(SR.JsonUnexpectedAttributeValue, extensionDataValueType)));
            }

            xmlReader.ReadEndElement();
            return dataNode;
        }