Exemplo n.º 1
0
        /// <summary>Creates a deep copy of the item specified</summary>
        /// <param name="item">The item to copy</param>
        /// <remarks>The function makes a deep copy of quite a lot which can be slow</remarks>
        public HttpInputItem(HttpInputItem item)
        {
            foreach (KeyValuePair <string, HttpInputItem> pair in item._items)
            {
                _items.Add(pair.Key, pair.Value);
            }

            foreach (string value in item._values)
            {
                _values.Add(value);
            }

            _ignoreChanges = item._ignoreChanges;
            _name          = item.Name;
        }
        /// <summary>
        /// Parses an item and returns it.
        /// This function is primarily used to parse array items as in user[name].
        /// </summary>
        /// <param name="name"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static HttpInputItem ParseItem(string name, string value)
        {
            HttpInputItem item;

            // Check if it's a sub item.
            // we can have multiple levels of sub items as in user[extension[id]]] => user -> extension -> id
            int pos = name.IndexOf('[');

            if (pos != -1)
            {
                string name1 = name.Substring(0, pos);
                string name2 = ExtractOne(name);
                item = new HttpInputItem(name1, null);
                item.Add(name2, value);
            }
            else
            {
                item = new HttpInputItem(name, value);
            }

            return(item);
        }