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); } } } }