using Abp.Logging; using System.Runtime.Serialization.Formatters.Binary; namespace VberZero.Tools.StringModel; public static class SerializeHelper { /// /// 深拷贝(对象需有[Serializable]可序列化特性) /// /// /// /// public static T DeepClone(this T target) { return VzDerializable(VzSerializable(target)); } public static string VzSerializable(object target) { try { using (MemoryStream stream = new MemoryStream()) { new BinaryFormatter().Serialize(stream, target); return Convert.ToBase64String(stream.ToArray()); } } catch (Exception e) { LogHelper.LogException(e); return null; } } public static T VzDerializable(string target) { try { byte[] targetArray = Convert.FromBase64String(target); using (MemoryStream stream = new MemoryStream(targetArray)) { return (T)new BinaryFormatter().Deserialize(stream); } } catch (Exception e) { LogHelper.LogException(e); return default(T); } } }