private static List <ActionParameterInfo> GetActionParameters(MethodInfo action) { var result = new List <ActionParameterInfo>(); var parameters = action.GetParameters(); foreach (var parameterInfo in parameters) { var param = new ActionParameterInfo(); param.Name = param.OriginalName = parameterInfo.Name; param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType); var fromUri = parameterInfo.GetCustomAttributes <FromUriAttribute>().FirstOrDefault(); if (fromUri != null) { param.Name = fromUri.Name ?? param.Name; } var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault(); // Parameters are from the URL unless specified by a [FromBody] attribute. param.FromUri = fromBody == null; param.ClrType = parameterInfo.ParameterType; param.Name = param.Name.ToCamelCase(); result.Add(param); } return(result); }
private static List <ActionParameterInfo> GetActionParameters(MethodInfo action) { var result = new List <ActionParameterInfo>(); var parameters = action.GetParameters(); foreach (var parameterInfo in parameters) { var param = new ActionParameterInfo(); param.Name = parameterInfo.Name; param.Type = TypeConverter.GetTypeScriptName(parameterInfo.ParameterType); var fromUri = parameterInfo.GetCustomAttributes <FromUriAttribute>().FirstOrDefault(); if (fromUri != null) { param.Name = fromUri.Name ?? param.Name; } var fromBody = parameterInfo.GetCustomAttributes <FromBodyAttribute>().FirstOrDefault(); // Parameters are from the URL unless specified by a [FromBody] attribute. param.FromUri = fromBody == null; //TODO: Support route parameters that are not 'id', might be hard as will need to parse routing setup if (parameterInfo.Name.Equals("id", StringComparison.OrdinalIgnoreCase)) { param.RouteProperty = true; } param.Name = param.Name.ToCamelCase(); result.Add(param); } return(result); }