利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
/// <summary> /// 深度克隆一个对象 /// </summary> /// <typeparam name="T">被克隆对象的类型</typeparam> /// <param name="t">被克隆的对象</param> /// <returns>返回一个新的T对象</returns> public T Clone<T>(T t) { using (Stream objectStream = new MemoryStream()) { //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制 IFormatter formatter = new BinaryFormatter(); formatter.Serialize(objectStream, t); objectStream.Seek(0, SeekOrigin.Begin); return (T)formatter.Deserialize(objectStream); } }