//using System; //using System.IO; //using System.Runtime.Serialization; //using System.Runtime.Serialization.Formatters.Binary; //namespace HRD.WebApi.Extensions //{ // /// // /// Reference Article http://www.codeproject.com/KB/tips/SerializedObjectCloner.aspx // /// Provides a method for performing a deep copy of an object. // /// Binary Serialization is used to perform the copy. // /// // public static class SystemExtensions // { // /// // /// Perform a deep Copy of the object. // /// // /// The type of object being copied. // /// The object instance to copy. // /// The copied object. // public static T Clone(this T source) // { // if (!typeof(T).IsSerializable) // { // throw new ArgumentException("The type must be serializable.", nameof(source)); // } // // Don't serialize a null object, simply return the default for that object // if (Object.ReferenceEquals(source, null)) // { // return default; // } // IFormatter formatter = new BinaryFormatter(); // Stream stream = new MemoryStream(); // using (stream) // { // formatter.Serialize(stream, source); // stream.Seek(0, SeekOrigin.Begin); // return (T)formatter.Deserialize(stream); // } // } // } //}