public override Guid Deserialize(ValueStream stream) { var guidBytes = new byte[16]; stream.Read(guidBytes, 0, guidBytes.Length); return(new Guid(guidBytes)); }
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)); }
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); }
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); } }