/// <summary> /// Parse the array of command line arguments. /// </summary> /// <param name="args">The array of command line arguments.</param> public void Parse(string[] args) { _ParsedArguments.Clear(); List <string> arguments = args.ToList(); Argument lastArgumentWithPrefix = null; for (int i = 0; i < arguments.Count; i++) { string currentValue = arguments[i]; string parameter; if (GetArgumentNameWithoutPrefix(ref currentValue, out parameter)) { if (!string.IsNullOrEmpty(parameter)) { arguments.Insert(i + 1, parameter); } lastArgumentWithPrefix = BuildArgument(currentValue, true); ParsedArguments.Add(lastArgumentWithPrefix); } else { bool addArgument = !string.IsNullOrEmpty(currentValue); if (lastArgumentWithPrefix != null) { if (lastArgumentWithPrefix.ArgumentValue != ArgumentValue.None) { addArgument = false; lastArgumentWithPrefix.Value = currentValue; SetArgumentIsValid(lastArgumentWithPrefix); } lastArgumentWithPrefix = null; } if (addArgument) { ParsedArguments.Add(BuildArgument(currentValue, false)); } } } }