Esempio n. 1
0
        public override Guid Deserialize(ValueStream stream)
        {
            var guidBytes = new byte[16];

            stream.Read(guidBytes, 0, guidBytes.Length);
            return(new Guid(guidBytes));
        }
Esempio n. 2
0
        public void DoubleResizing()
        {
            var input = new byte[] { 1, 2, 3, 4, 5 };

            using (var stream = new ValueStream())
            {
                stream.Write(input, 0, input.Length);
                stream.Write(input, 0, input.Length);

                Assert.Equal(10, stream.Position);

                stream.Seek(0);

                var result = new byte[5];
                stream.Read(result, 0, result.Length);
                Assert.Equal(input, result);

                stream.Read(result, 0, result.Length);
                Assert.Equal(input, result);
            }
        }
        public override string Deserialize(ValueStream stream)
        {
            var union = new UnifiedUnion(
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte(),
                (byte)stream.ReadByte());

            var length = union.Int32;

            var stringBuffer = new byte[length];

            stream.Read(stringBuffer, 0, stringBuffer.Length);
            return(Encoding.UTF8.GetString(stringBuffer));
        }
Esempio n. 4
0
        public object Deserialize(ValueStream stream, Type dataType)
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(Serializer));
            }

            if (dataType == null)
            {
                throw new ArgumentNullException(nameof(dataType));
            }

            if (!dataType.IsValueType || Nullable.GetUnderlyingType(dataType) != null)
            {
                if (stream.ReadByte() == 0)
                {
                    return(null);
                }
            }

            var dto = converterContainer.TryGetDto(dataType);

            if (dto?.Converter != null)
            {
                return(dto.Converter.DeserializeObject(stream, dataType));
            }

            if (stream.ReadByte() == 1)
            {
                var aliasBytes = new byte[4];
                stream.Read(aliasBytes, 0, aliasBytes.Length);

                var alias = new UnifiedUnion(aliasBytes[0], aliasBytes[1], aliasBytes[2], aliasBytes[3]).Int32;

                dataType = converterContainer.GetTypeFromAlias(alias);
            }

            var instance = activator.Create(dataType);

            var propertyInfo = EnsureProperties(dataType);

            for (var i = 0; i < propertyInfo.Length; i++)
            {
                propertyInfo[i].SetValue(instance, Deserialize(stream, propertyInfo[i].PropertyType));
            }

            return(instance);
        }
Esempio n. 5
0
        public void StreamReadsAndWrites()
        {
            var input = new byte[] { 1, 2, 3, 4, 5 };

            using (var stream = new ValueStream())
            {
                stream.Write(input, 0, input.Length);

                stream.Seek(0);

                var result = new byte[5];
                var read   = stream.Read(result, 0, result.Length);

                Assert.Equal(result.Length, read);
                Assert.Equal(input, result);
            }
        }