コード例 #1
0
        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>());
        }
コード例 #2
0
        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);
        }