/// <summary> /// Create a drawing template from given drawing with the given path/title /// </summary> /// <param name="title"></param> /// <param name="drawing"></param> public TemplateDrawingModel(string title, Drawing drawing) { if (drawing == null) { throw new ArgumentNullException("d"); } _path = title; //clone the drawing so subsequent changes effect only one copy _originalDrawing = drawing.Clone() as Drawing; //same here, clone the working copy. Shallow copy ok as all members are value or immutable reference types. _drawing = _originalDrawing.Clone() as Drawing; }
/// <summary> /// Create a new drawing template from the persisted/serialized drawing /// </summary> /// <param name="path"></param> public TemplateDrawingModel(string path) { StreamReader sr = new StreamReader(path); XmlSerializer xml = new XmlSerializer(typeof(Drawing)); Drawing d = xml.Deserialize(sr) as Drawing; if (d != null) { _path = path; _originalDrawing = d; _drawing = _originalDrawing.Clone() as Drawing; } }