/// <summary> /// Read data of given XmlElement as array of specified ISavable /// </summary> /// <typeparam name="T">type of ISavable to read</typeparam> /// <param name="e">XmlElement contains data</param> /// <param name="creator">Helper method for instantiation of T</param> /// <returns>array of instance of T</returns> public T[] ReadSavableArray <T>(XmlElement e, CreateISavable <T> creator) where T : ISavable { string lenghtStr = e.GetAttribute("Lenght"); int length = 0; if (!int.TryParse(lenghtStr, out length)) { length = 0; } T[] array = new T[length]; XmlElement element = e.FirstChild as XmlElement; int index = 0; while (element != null) { if (element.Name != XmlSaveStream.NoData) { T newItem = creator(); newItem.Load(element, this); array[index] = newItem; } element = e.GetNextSibling(element); index++; } return(array); }
/// <summary> /// Read data of given XmlElement as specified ISavable /// </summary> /// <typeparam name="T">type of ISavable to read</typeparam> /// <param name="e">XmlElement contains data</param> /// <param name="creator">Helper method for instantiation of T</param> /// <returns>Instance of T</returns> public T ReadSavable <T>(XmlElement e, CreateISavable <T> creator) where T : ISavable { T newItem = creator(); newItem.Load(e, this); return(newItem); }
/// <summary> /// Read a Savable class from stream /// </summary> /// <typeparam name="T">Type of ISavable</typeparam> /// <param name="creator">Helper method to instantiate ISavable class</param> /// <returns>ISavable data</returns> public T ReadSavable <T>(CreateISavable <T> creator) where T : ISavable { bool isNotNull = ReadBoolean(); T newItem = creator(); if (isNotNull) { newItem.Load(this); } return(newItem); }
/// <summary> /// Read an array of Savable class from stream /// </summary> /// <typeparam name="T">Type of ISavable</typeparam> /// <param name="creator">Helper method to instantiate ISavable class</param> /// <returns>array of ISavable data</returns> public T[] ReadSavableArray <T>(CreateISavable <T> creator) where T : ISavable { int length = ReadInt(); T[] array = new T[length]; for (int i = 0; i < length; i++) { array[i] = ReadSavable <T>(creator); } return(array); }