using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using IwbZero.ToolCommon.LogHelpers; namespace IwbZero.ToolCommon { public static class SerializeHelper { /// /// 深拷贝(对象需有[Serializable]可序列化特性) /// /// /// /// public static T DeepClone(T target) { return IwbDeserialization(IwbSerialization(target)); } public static string IwbSerialization(object target) { try { using (MemoryStream stream = new MemoryStream()) { new BinaryFormatter().Serialize(stream, target); return Convert.ToBase64String(stream.ToArray()); } } catch (Exception e) { typeof(SerializeHelper).LogError(e); return null; } } public static T IwbDeserialization(string target) { try { byte[] targetArray = Convert.FromBase64String(target); using (MemoryStream stream = new MemoryStream(targetArray)) { return (T)new BinaryFormatter().Deserialize(stream); } } catch (Exception e) { typeof(SerializeHelper).LogError(e); return default(T); } } } }