/// <summary> /// Creates a new object. /// </summary> /// <param name="parameterInfo"></param> /// <param name="defaultParserResolver"></param> public MethodParameter(ParameterInfo parameterInfo, TypeParserResolver defaultParserResolver) { Name = parameterInfo.Name; NormalisedName = PathPart.Normalise(parameterInfo.Name); ParameterType = parameterInfo.ParameterType; ElementType = parameterInfo.ParameterType.IsArray ? parameterInfo.ParameterType.GetElementType() : null; IsArray = ElementType != null; IsOptional = parameterInfo.IsOptional; IsObject = !IsArray && ParameterType.IsClass && ParameterType != typeof(string); DefaultValue = parameterInfo.DefaultValue; TypeParserResolver = BuildTypeParserResolver(parameterInfo, defaultParserResolver); IsArrayPassedAsSingleValue = IsArray && ElementType == typeof(byte) && parameterInfo.GetCustomAttribute(typeof(ExpectArrayAttribute), inherit: false) == null; }
private PathPart[] ExtractPathParts(MethodParameter[] methodParameters, RouteAttribute routeAttribute) { PathPart[] result = null; if (!String.IsNullOrEmpty(routeAttribute.Route)) { var unescaped = OwinConvert.UrlDecode(routeAttribute.Route); result = unescaped .Split('/') .Select(r => PathPart.Create(r, methodParameters)) .ToArray(); } return(result); }