using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable] //This is needed to binary serialization
public class Demo
{
public uint X{get;set;}
public uint Y;
public DateTime Z;
public Demo(){}
}
public static class BinaryCloner
{
public static T DeepCopy<T>(T obj)
{
using (var memoryStream = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, obj);
memoryStream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(memoryStream);
}
}
}
public class Test
{
public static void Main()
{
Demo a = new Demo();
a.X = 50;
a.Y = 20;
a.Z = DateTime.Now;
Demo b = BinaryCloner.DeepCopy(a);
Console.WriteLine($"{a.X} | {b.X}");
Console.WriteLine($"{a.Y} | {b.Y}");
Console.WriteLine($"{a.Z} | {b.Z}");
// your code goes here
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb247CnVzaW5nIFN5c3RlbS5SdW50aW1lLlNlcmlhbGl6YXRpb24uRm9ybWF0dGVycy5CaW5hcnk7CgoKW1NlcmlhbGl6YWJsZV0gLy9UaGlzIGlzIG5lZWRlZCB0byBiaW5hcnkgc2VyaWFsaXphdGlvbgpwdWJsaWMgY2xhc3MgRGVtbwp7CglwdWJsaWMgdWludCBYe2dldDtzZXQ7fQoJcHVibGljIHVpbnQgWTsKCXB1YmxpYyBEYXRlVGltZSBaOwoJcHVibGljIERlbW8oKXt9Cn0KCnB1YmxpYyBzdGF0aWMgY2xhc3MgQmluYXJ5Q2xvbmVyCnsKICAgIHB1YmxpYyBzdGF0aWMgVCBEZWVwQ29weTxUPihUIG9iaikKICAgIHsKICAgICAgICB1c2luZyAodmFyIG1lbW9yeVN0cmVhbSA9IG5ldyBNZW1vcnlTdHJlYW0oKSkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBmb3JtYXR0ZXIgPSBuZXcgQmluYXJ5Rm9ybWF0dGVyKCk7CiAgICAgICAgICAgIGZvcm1hdHRlci5TZXJpYWxpemUobWVtb3J5U3RyZWFtLCBvYmopOwogICAgICAgICAgICBtZW1vcnlTdHJlYW0uU2VlaygwLCBTZWVrT3JpZ2luLkJlZ2luKTsKICAgICAgICAgICAgcmV0dXJuIChUKWZvcm1hdHRlci5EZXNlcmlhbGl6ZShtZW1vcnlTdHJlYW0pOwogICAgICAgIH0KICAgIH0KfQpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJRGVtbyBhID0gbmV3IERlbW8oKTsKCQlhLlggPSA1MDsKCQlhLlkgPSAyMDsKCQlhLlogPSBEYXRlVGltZS5Ob3c7CgkJRGVtbyBiID0gQmluYXJ5Q2xvbmVyLkRlZXBDb3B5KGEpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCQie2EuWH0gfCB7Yi5YfSIpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCQie2EuWX0gfCB7Yi5ZfSIpOwoJCUNvbnNvbGUuV3JpdGVMaW5lKCQie2EuWn0gfCB7Yi5afSIpOwoJCQoJCgkJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJfQp9Cg==