|
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 CloudWaterNetwork
|
{
|
public static class copy
|
{
|
|
public static List<dynamic> deepcopy(List<object> obj)
|
{
|
return DeepCopyByBin<List<dynamic>>(obj);
|
}
|
|
public static List<string> deepcopy(List<string> obj)
|
{
|
return DeepCopyByBin<List<string>>(obj);
|
}
|
|
public static T DeepCopyByBin<T>(T obj)
|
{
|
dynamic retval;
|
using (MemoryStream ms = new MemoryStream())
|
{
|
BinaryFormatter bf = new BinaryFormatter();
|
//序列化成流
|
bf.Serialize(ms, obj);
|
ms.Seek(0, SeekOrigin.Begin);
|
//反序列化成对象
|
retval = bf.Deserialize(ms);
|
ms.Close();
|
}
|
return (T)retval;
|
}
|
|
|
public static T DeepCopy<T>(this T obj)
|
{
|
dynamic retval;
|
using (MemoryStream ms = new MemoryStream())
|
{
|
BinaryFormatter bf = new BinaryFormatter();
|
//序列化成流
|
bf.Serialize(ms, obj);
|
ms.Seek(0, SeekOrigin.Begin);
|
//反序列化成对象
|
retval = bf.Deserialize(ms);
|
ms.Close();
|
}
|
return (T)retval;
|
}
|
|
|
}
|
|
|
}
|