/// <summary> /// Perform a deep clone operation by serializing then deserializing an object. /// </summary> /// <typeparam name="T">The type of the object to clone.</typeparam> /// <param name="instance">The instance to clone.</param> /// <param name="settings">The settings to use with the <see cref="ObjectWriter"/></param> /// <returns>A deep clone of the <paramref name="instance"/>.</returns> public static T Clone <T>(T instance, SerializationSettings settings = null) { var ms = new List <object>(256); var pw = new TokenPrimitiveWriter(ms); var ow = new ObjectWriter(pw) { Settings = settings, }; ow.Write(instance); var pr = new TokenPrimitiveReader(ms); var or = new ObjectReader(pr); var result = or.Read(); return((T)result); }
/// <summary> /// Perform a deep clone operation by serializing then deserializing an object. /// </summary> /// <typeparam name="T">The type of the object to clone.</typeparam> /// <param name="instance">The instance to clone.</param> /// <param name="settings">The settings to use with the <see cref="ObjectWriter"/></param> /// <returns>A deep clone of the <paramref name="instance"/>.</returns> public static T Clone <T>(T instance, SerializationSettings settings = null) { var ms = new List <object>(256); var pw = new TokenPrimitiveWriter(ms); var ow = new Writer(pw) { Settings = new SerializationSettings { IgnoreISerializable = settings?.IgnoreISerializable ?? true, IgnoreTypeConverter = settings?.IgnoreTypeConverter ?? true, }, }; ow.Write(instance); var pr = new TokenPrimitiveReader(ms); var or = new Reader(pr); var result = or.Read(); return((T)result); }