示例#1
0
        internal MappedParameters Map(Request?request, IList <RawPathParameter> parameters)
        {
            var mapped = new List <MappedParameter>(parameters.Count);

            foreach (var typed in _to.Parameters)
            {
                if (typed.IsBody)
                {
                    var body = MapBodyFrom(request);
                    mapped.Add(new MappedParameter(typed.Type, body));
                }
                else
                {
                    var raw = RawPathParameter.Named(typed.Name, parameters);
                    if (raw == null)
                    {
                        break;
                    }
                    var other = MapOtherFrom(raw);
                    mapped.Add(new MappedParameter(typed.Type, other));
                }
            }
            mapped.AddRange(_additionalParameters);

            return(new MappedParameters(Id, _method, _to.MethodName, mapped));
        }
示例#2
0
        private object MapOtherFrom(RawPathParameter parameter)
        {
            var type = _to.ParameterOf(parameter.Name).Type;

            switch (type)
            {
            case "String":
            case "string":
                return(parameter.Value);

            case "int":
            case "Integer":
                return(int.Parse(parameter.Value));

            case "long":
            case "Long":
                return(long.Parse(parameter.Value));

            case "bool":
            case "Boolean":
                return(bool.Parse(parameter.Value));

            case "double":
            case "Double":
                return(double.Parse(parameter.Value));

            case "short":
            case "Short":
                return(short.Parse(parameter.Value));

            case "float":
            case "Float":
                return(float.Parse(parameter.Value));

            case "char":
            case "Character":
                return(parameter.Value[0]);

            case "byte":
            case "Byte":
                return(byte.Parse(parameter.Value));

            default:
                return(null);
            }
        }