1 // 2 // Copyright (c) 2010-2018 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using System; 8 using System.IO; 9 using Antmicro.Migrant; 10 using Antmicro.Migrant.Customization; 11 12 namespace Antmicro.Renode.PlatformDescription 13 { 14 public class SerializationProvider 15 { 16 public static SerializationProvider Instance { get; private set; } 17 SerializationProvider()18 static SerializationProvider() 19 { 20 Instance = new SerializationProvider(); 21 } 22 SerializationProvider()23 private SerializationProvider() 24 { 25 var settings = new Settings(disableTypeStamping: true); 26 serializer = new Serializer(settings); 27 memoryStream = new MemoryStream(); 28 } 29 DeepClone(T obj)30 public T DeepClone<T>(T obj) 31 { 32 memoryStream.Seek(0, SeekOrigin.Begin); 33 serializer.Serialize(obj, memoryStream); 34 memoryStream.Seek(0, SeekOrigin.Begin); 35 return serializer.Deserialize<T>(memoryStream); 36 } 37 38 private readonly Serializer serializer; 39 private readonly MemoryStream memoryStream; 40 } 41 } 42