public ConstructorParameterMapping[] GetConstructorParameterMappings(bool ignoreEnumDefinitions = false) { var tempConstructorParameters = Method.Parameters .Select(p => new { Parameter = p, RoutePart = Controller.RouteParts.SingleOrDefault(brp => brp.ParameterName == p.Name) ?? RouteParts.SingleOrDefault(rp => rp.ParameterName == p.Name) ?? QueryStringParameters.SingleOrDefault(qsp => qsp.Name == p.Name) }) .Where(cp => cp.RoutePart != null) .ToList(); var constructorParameters = new List <WebApiRoutePart>(); foreach (var tcp in tempConstructorParameters) { if (tcp.RoutePart.Parameter == null) { tcp.RoutePart.Parameter = tcp.Parameter; } constructorParameters.Add(tcp.RoutePart); } var constructorParameterMappings = constructorParameters .Select(routePart => new ConstructorParameterMapping { IsOptional = routePart.IsOptional && TypeService.IsParameterOptional(routePart.Parameter), TypeMapping = routePart.GetTypeMapping(), Name = routePart.Parameter.Name, StringWithOptionals = routePart.GetParameterString(interfaceName: true, ignoreEnumDefinitions: ignoreEnumDefinitions), String = routePart.GetParameterString(withOptionals: false, interfaceName: true, ignoreEnumDefinitions: ignoreEnumDefinitions) }) .OrderBy(p => p.IsOptional) .ToArray(); return(constructorParameterMappings); }