1234567891011121314151617181920212223242526272829 |
- using System;
- using System.IO;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Formatters.Binary;
- public class Clone
- {
- public static T DeepCopy<T>(T source)
- {
- if (!typeof(T).IsSerializable)
- {
- throw new ArgumentException("The type must be serializable.", "source");
- }
- if (Object.ReferenceEquals(source, null))
- {
- return default(T);
- }
- IFormatter formatter = new BinaryFormatter();
- Stream stream = new MemoryStream();
- using (stream)
- {
- formatter.Serialize(stream, source);
- stream.Seek(0, SeekOrigin.Begin);
- return (T)formatter.Deserialize(stream);
- }
- }
- }
|