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);
        }