private string ValueAsString()

in src/dotnet-svcutil/lib/src/FrameworkFork/Microsoft.Xml/Xml/BinaryXml/XmlBinaryReader.cs [3940:4065]


        private string ValueAsString(BinXmlToken token)
        {
            try
            {
                CheckValueTokenBounds();
                switch (token)
                {
                    case BinXmlToken.SQL_NCHAR:
                    case BinXmlToken.SQL_NVARCHAR:
                    case BinXmlToken.SQL_NTEXT:
                        return GetString(_tokDataPos, _tokLen);

                    case BinXmlToken.XSD_BOOLEAN:
                        {
                            if (0 == _data[_tokDataPos])
                                return "false";
                            else
                                return "true";
                        }

                    case BinXmlToken.SQL_BIT:
                    case BinXmlToken.SQL_TINYINT:
                    case BinXmlToken.SQL_SMALLINT:
                    case BinXmlToken.SQL_INT:
                    case BinXmlToken.SQL_BIGINT:
                    case BinXmlToken.XSD_BYTE:
                    case BinXmlToken.XSD_UNSIGNEDSHORT:
                    case BinXmlToken.XSD_UNSIGNEDINT:
                        return ValueAsLong().ToString(CultureInfo.InvariantCulture);

                    case BinXmlToken.XSD_UNSIGNEDLONG:
                        return ValueAsULong().ToString(CultureInfo.InvariantCulture);

                    case BinXmlToken.SQL_REAL:
                        return XmlConvert.ToString(GetSingle(_tokDataPos));

                    case BinXmlToken.SQL_FLOAT:
                        return XmlConvert.ToString(GetDouble(_tokDataPos));

                    case BinXmlToken.SQL_UUID:
                        {
                            int a; short b, c;
                            int pos = _tokDataPos;
                            a = GetInt32(pos);
                            b = GetInt16(pos + 4);
                            c = GetInt16(pos + 6);
                            Guid v = new Guid(a, b, c, _data[pos + 8], _data[pos + 9], _data[pos + 10], _data[pos + 11], _data[pos + 12], _data[pos + 13], _data[pos + 14], _data[pos + 15]);
                            return v.ToString();
                        }

                    case BinXmlToken.SQL_SMALLMONEY:
                        {
                            BinXmlSqlMoney v = new BinXmlSqlMoney(GetInt32(_tokDataPos));
                            return v.ToString();
                        }
                    case BinXmlToken.SQL_MONEY:
                        {
                            BinXmlSqlMoney v = new BinXmlSqlMoney(GetInt64(_tokDataPos));
                            return v.ToString();
                        }

                    case BinXmlToken.XSD_DECIMAL:
                    case BinXmlToken.SQL_DECIMAL:
                    case BinXmlToken.SQL_NUMERIC:
                        {
                            BinXmlSqlDecimal v = new BinXmlSqlDecimal(_data, _tokDataPos, token == BinXmlToken.XSD_DECIMAL);
                            return v.ToString();
                        }

                    case BinXmlToken.SQL_CHAR:
                    case BinXmlToken.SQL_VARCHAR:
                    case BinXmlToken.SQL_TEXT:
                        {
                            int pos = _tokDataPos;
                            int codepage = GetInt32(pos);
                            Encoding enc = System.Text.Encoding.GetEncoding(codepage);
                            return enc.GetString(_data, pos + 4, _tokLen - 4);
                        }

                    case BinXmlToken.SQL_VARBINARY:
                    case BinXmlToken.SQL_BINARY:
                    case BinXmlToken.SQL_IMAGE:
                    case BinXmlToken.SQL_UDT:
                    case BinXmlToken.XSD_BASE64:
                        {
                            return Convert.ToBase64String(_data, _tokDataPos, _tokLen);
                        }

                    case BinXmlToken.XSD_BINHEX:
                        return BinHexEncoder.Encode(_data, _tokDataPos, _tokLen);

                    case BinXmlToken.SQL_DATETIME:
                    case BinXmlToken.SQL_SMALLDATETIME:
                    case BinXmlToken.XSD_TIME:
                    case BinXmlToken.XSD_DATE:
                    case BinXmlToken.XSD_DATETIME:
                    case BinXmlToken.XSD_KATMAI_DATE:
                    case BinXmlToken.XSD_KATMAI_DATETIME:
                    case BinXmlToken.XSD_KATMAI_TIME:
                    case BinXmlToken.XSD_KATMAI_DATEOFFSET:
                    case BinXmlToken.XSD_KATMAI_DATETIMEOFFSET:
                    case BinXmlToken.XSD_KATMAI_TIMEOFFSET:
                        return ValueAsDateTimeString();

                    case BinXmlToken.XSD_QNAME:
                        {
                            int nameNum = ParseMB32(_tokDataPos);
                            if (nameNum < 0 || nameNum >= _symbolTables.qnameCount)
                                throw new XmlException(ResXml.XmlBin_InvalidQNameID, String.Empty);
                            QName qname = _symbolTables.qnametable[nameNum];
                            if (qname.prefix.Length == 0)
                                return qname.localname;
                            else
                                return String.Concat(qname.prefix, ":", qname.localname);
                        }

                    default:
                        throw ThrowUnexpectedToken(_token);
                }
            }
            catch
            {
                _state = ScanState.Error;
                throw;
            }
        }