SerializeHelper.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.IO;
  3. using System.Runtime.Serialization.Formatters.Binary;
  4. using IwbZero.ToolCommon.LogHelpers;
  5. namespace IwbZero.ToolCommon
  6. {
  7. public static class SerializeHelper
  8. {
  9. /// <summary>
  10. /// 深拷贝(对象需有[Serializable]可序列化特性)
  11. /// </summary>
  12. /// <typeparam name="T"></typeparam>
  13. /// <param name="target"></param>
  14. /// <returns></returns>
  15. public static T DeepClone<T>(T target)
  16. {
  17. return IwbDeserialization<T>(IwbSerialization(target));
  18. }
  19. public static string IwbSerialization(object target)
  20. {
  21. try
  22. {
  23. using (MemoryStream stream = new MemoryStream())
  24. {
  25. new BinaryFormatter().Serialize(stream, target);
  26. return Convert.ToBase64String(stream.ToArray());
  27. }
  28. }
  29. catch (Exception e)
  30. {
  31. typeof(SerializeHelper).LogError(e);
  32. return null;
  33. }
  34. }
  35. public static T IwbDeserialization<T>(string target)
  36. {
  37. try
  38. {
  39. byte[] targetArray = Convert.FromBase64String(target);
  40. using (MemoryStream stream = new MemoryStream(targetArray))
  41. {
  42. return (T)new BinaryFormatter().Deserialize(stream);
  43. }
  44. }
  45. catch (Exception e)
  46. {
  47. typeof(SerializeHelper).LogError(e);
  48. return default(T);
  49. }
  50. }
  51. }
  52. }