public virtual bool IsValid() { var ret = true; foreach (var paramRow in paramTable) { var arg = ParsedArgs.ContainsKey(paramRow.Key) ? ParsedArgs[paramRow.Key] : null; if (arg == null) { if (paramRow.Required) { ret = OutputValidationMessage(string.Format("Missing required argument key: {0}.", paramRow.Key)); } continue; } if ((paramRow.RequiresArgument) && (arg.Count == 0 || string.IsNullOrEmpty(arg[0]))) { return(OutputValidationMessage(string.Format("Missing argument value for key: {0}.", paramRow.Key))); } if (arg.Count > 1 && !paramRow.Reoccurs) { ret = OutputValidationMessage(string.Format("Argument key cannot reoccur: {0}.", paramRow.Key)); } } foreach (var keyValuePair in ParsedArgs) { var paramRow = Array.Find(paramTable, match => match.Key == keyValuePair.Key); if (paramRow == null) { ret = OutputValidationMessage(string.Format("Argument key unknown: {0}.", keyValuePair.Key)); } } return(ret); }