using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Monpl.Utils.Extensions
{
public static class GenericExtensions
{
///
/// 깊은 복사를 한다. (조건: 여기 들어오는 모든 클래스는 Serializable가 되있어야 한다.)
///
///
///
///
public static T DeepClone(this T obj)
{
using (var ms = new MemoryStream())
{
var formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);
ms.Position = 0;
return (T) formatter.Deserialize(ms);
}
}
}
}