private void SaveLayout(ControlLayout layout, object control)
 {
     using (MemoryStream stream = new MemoryStream()) {
         try {
             MethodInfo mi = GetLayoutMethod(control.GetType(), "SaveLayoutToStream");
             mi.Invoke(control, new object[] { stream });
             layout.Layout = stream.ToArray();
         } finally { stream.Close(); }
     }
 }
 private void RestoreLayout(ControlLayout layout, object control)
 {
     if (layout.Layout == null)
     {
         return;
     }
     using (MemoryStream stream = new MemoryStream(layout.Layout)) {
         try {
             MethodInfo mi = GetLayoutMethod(control.GetType(), "RestoreLayoutFromStream");
             mi.Invoke(control, new object[] { stream });
         } finally { stream.Close(); }
     }
 }
        private ControlLayout GetControlLayout(object control)
        {
            ControlLayout layout = null;
            string        key    = fControls[control];

            foreach (ControlLayout item in deserializedCache)
            {
                if (item.ControlID == key)
                {
                    layout = item;
                    break;
                }
            }
            if (layout == null)
            {
                layout = new ControlLayout(key);
                deserializedCache.Add(layout);
            }
            return(layout);
        }