예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }