Files
GeekDesk/Util/DeepCopyUtil.cs
2025-03-07 10:59:39 +08:00

29 lines
828 B
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace GeekDesk.Util
{
public static class DeepCopyUtil
{
// 使用序列化和反序列化实现深度拷贝
public static T DeepCopy<T>(T obj)
{
if (obj == null)
throw new ArgumentNullException(nameof(obj));
using (var memoryStream = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(memoryStream, obj); // 序列化
memoryStream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(memoryStream); // 反序列化
}
}
}
}