コード例 #1
0
        public static ParameterCollection Parse(ITextParser reader)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            var parameters = new ParameterCollection();
            while (!reader.EndOfFile)
            {
                string name = Uri.UnescapeDataString(reader.ReadToEnd("&="));
                char current = reader.Current;
                reader.Consume();
                switch (current)
                {
                    case '&':
                        parameters.Add(name, string.Empty);
                        break;
                    case '=':
                        {
                            string value = reader.ReadToEnd("&");
                            reader.Consume();
                            parameters.Add(name, Uri.UnescapeDataString(value));
                        }
                        break;
                    default:
                        parameters.Add(name, string.Empty);
                        break;
                }
            }

            return parameters;
        }
コード例 #2
0
        /// <summary>
        /// Get parameters 
        /// </summary>
        /// <param name="arrayName">Sub array (text array)</param>
        /// <returns></returns>
        public IParameterCollection GetParameters(string arrayName)
        {
            var collection = new ParameterCollection();
            arrayName = arrayName + "[";
            foreach (var item in _items)
            {
                if (!item.Key.StartsWith(arrayName)) continue;
                int pos = arrayName.IndexOf("]");
                if (pos == -1) continue;

                string name = arrayName.Substring(arrayName.Length, pos - arrayName.Length);
                foreach (string value in item.Value)
                    collection.Add(name, value);
            }

            return collection;
        }