using System.IO.Compression;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
public static void Main()
Console.WriteLine("Enter a:Bytes section of VmsService.GetOrderCodes() response:");
var base64 = Console.ReadLine();
foreach (var item in Deserializer.Deserialize(base64))
Console.WriteLine($"Generated OrderCode {item.OrderCode} for account {item.AccountKeyCode}");
Console.WriteLine("More codes(y) or exit(n)?");
response = Console.ReadLine();
while (response != "y" && response != "n");
Console.WriteLine("Done");
private static class Deserializer
private static BinaryFormatter Formatter;
Formatter = new BinaryFormatter();
Formatter.Binder = new DeserializeAsLocalOrderCodeDtoTypeBinder();
public static IEnumerable<OrderCodeDto> Deserialize(string base64Bytes)
using var contentStream = new MemoryStream(Convert.FromBase64String(base64Bytes));
using var gzipStream = new GZipStream(contentStream, CompressionMode.Decompress);
using var reader = new StreamReader(gzipStream);
while (!reader.EndOfStream)
using var itemStream = new MemoryStream(Convert.FromBase64String(reader.ReadLine()));
yield return (OrderCodeDto)Formatter.Deserialize(itemStream);
private sealed class DeserializeAsLocalOrderCodeDtoTypeBinder : SerializationBinder
public override Type BindToType(string assemblyName, string typeName) => typeof(OrderCodeDto);
public class OrderCodeDto
public int AccountKeyCode