/// <summary> /// /// </summary> /// <param name="container"></param> /// <param name="formatter"></param> /// <param name="fstream"></param> private void DeserializeContainer(DvMediaContainer container, BinaryFormatter formatter, FileStream fstream) { // get number of children in container int count = (int) formatter.Deserialize (fstream); ArrayList children = new ArrayList(count); object obj; DvMediaItem dvi; DvMediaContainer dvc; for (int i=0; i<count; i++) { try { obj = formatter.Deserialize(fstream); } catch (Exception e) { throw new SerializationException("Error deserializing a child of containerID=\"" +container.ID+ "\" Title=\"" +container.Title+ "\".", e); } dvi = obj as DvMediaItem; dvc = obj as DvMediaContainer; if (dvc != null) { this.DeserializeContainer(dvc, formatter, fstream); children.Add(dvc); } else if (dvi != null) { children.Add(dvi); } else { throw new ApplicationException("The MediaServer deserialized an object that is neither a DvMediaItem nor a DvMediaContainer."); } } container.AddObjects(children, true); }