diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs index 624d25c..4da3008 100644 --- a/EduNetworkBuilder/Network.cs +++ b/EduNetworkBuilder/Network.cs @@ -10,6 +10,9 @@ using System.IO; using System.Text.RegularExpressions; using System.ComponentModel; using System.Drawing.Imaging; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters.Binary; + namespace EduNetworkBuilder @@ -17,6 +20,7 @@ namespace EduNetworkBuilder /// /// This is a whole network. LAN, WAN, Internet; everything combined /// + [Serializable] public class Network { public string PuzzleName = ""; @@ -150,6 +154,30 @@ namespace EduNetworkBuilder return newitem; } + //from: http://stackoverflow.com/questions/78536/cloning-objects-in-c + public static T DeepClone(T source) + { + if (!typeof(T).IsSerializable) + { + throw new ArgumentException("The type must be serializable.", "source"); + } + + // Don't serialize a null object, simply return the default for that object + 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); + } + } + public void ClearComponents() { NetComponents.Clear();