private void SetArgumentIsValid(Argument argument) { if (RequirePrefix && !argument.HasPrefix) { argument.IsValid = false; return; } bool allowedArgument = true; if (AllowedArguments.Count > 0 && argument.HasPrefix) { allowedArgument = AllowedArguments.Contains(argument); } switch (argument.ArgumentValue) { case ArgumentValue.None: case ArgumentValue.Optional: { argument.IsValid = allowedArgument; break; } case ArgumentValue.Required: { argument.IsValid = allowedArgument && !string.IsNullOrEmpty(argument.Value); break; } } }
/// <summary> /// Add an allowed <see cref="Argument"/>. /// </summary> /// <param name="argument">The <see cref="Argument"/>.</param> public void AddAllowedArgument(Argument argument) { string argumentName = argument.Name; string parameter; GetArgumentNameWithoutPrefix(ref argumentName, out parameter); AllowedArguments.Add(new Argument(argumentName, argument.ArgumentValue, true)); }
// ReSharper restore InconsistentNaming #endregion #region Private Methods private Argument BuildArgument(string argumentName, bool hasPrefix) { Argument returnValue; if (AllowedArguments.Count > 0 && AllowedArguments.Contains(argumentName)) { returnValue = AllowedArguments[argumentName].Clone(); } else { returnValue = new Argument(argumentName, hasPrefix); } SetArgumentIsValid(returnValue); return(returnValue); }