public override StringParseResult <object> TryParse(Type type, string s)
        {
            bool _canParse;

            if (_TypeCache.TryGetValue(type, out _canParse))
            {
                if (!_canParse)
                {
                    return(StringParseResult.UnsupportedType(type, s));
                }

                return(_UnderlyingStringParser.TryParse(type, s));
            }

            var _result = _UnderlyingStringParser.TryParse(type, s);

            _TypeCache.TryAdd(type, _result.IsTypeSupported.GetValueOrDefault());
            return(_result);
        }
예제 #2
0
        public SetArgumentDataResult TrySetArgumentNameAndValue(string argumentName, string argumentValue)
        {
            var argumentNameParseResult = _argument.TrySetArgumentName(argumentName);

            if (argumentNameParseResult != SetArgumentDataResult.Success)
            {
                return(argumentNameParseResult);
            }

            char parsedArgumentValue;
            var  isArgumentValueValid = _stringParser.TryParse(argumentValue, out parsedArgumentValue);

            if (!isArgumentValueValid)
            {
                return(SetArgumentDataResult.InvalidArgumentValue);
            }

            ParsedArgumentValue = parsedArgumentValue;
            ParsedSuccessfully  = true;
            return(SetArgumentDataResult.Success);
        }
예제 #3
0
 public static bool TryParse <TResult>(IStringParser <TResult> parser, string text, Nparams param, out TResult validValue)
 {
     return(parser.TryParse(text, param, out validValue));
 }
예제 #4
0
 public override Result TryParse(Type type, string s, CultureInfo cultureInfo, Func <Type, string, Result> tryParse)
 {
     return(_UnderlyingStringParser.TryParse(type, s));
 }