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();