public static T GetValueOrDefault <T>(this CommandResult commandResult) { var conversionResult = commandResult.ArgumentConversionResults .SingleOrDefault() ?? ArgumentConversionResult.None(commandResult.ArgumentConversionResult.Argument); return(conversionResult .ConvertIfNeeded(commandResult, typeof(T)) .GetValueOrDefault <T>()); }
internal static ArgumentConversionResult?Validate( SymbolResult symbolResult, Argument argument, int minimumNumberOfValues, int maximumNumberOfValues) { var argumentResult = symbolResult switch { ArgumentResult a => a, _ => symbolResult.Root !.FindResultFor(argument) }; var tokenCount = argumentResult?.Tokens.Count ?? 0; if (tokenCount < minimumNumberOfValues) { if (symbolResult.UseDefaultValueFor(argument)) { return(null); } return(ArgumentConversionResult.Failure( argument, symbolResult.LocalizationResources.RequiredArgumentMissing(symbolResult), ArgumentConversionResultType.FailedMissingArgument)); } if (tokenCount > maximumNumberOfValues) { if (symbolResult is OptionResult optionResult) { if (!optionResult.Option.AllowMultipleArgumentsPerToken) { return(ArgumentConversionResult.Failure( argument, symbolResult !.LocalizationResources.ExpectsOneArgument(symbolResult), ArgumentConversionResultType.FailedTooManyArguments)); } } } return(null); }