private void AddParameters(MethodCallExpression methodCall, IDictionary <string, string> values) { var attributeRecogniser = new AttributeRecogniser(); var propertyReader = new PropertyReader(); var parameters = methodCall.Method.GetParameters(); var arguments = methodCall.Arguments; for (int i = 0; i < parameters.Length; i++) { var param = parameters[i]; var expectedValue = GetExpectedValue(arguments[i]); var isFromBody = attributeRecogniser.IsFromBody(param); if (expectedValue != null || !isFromBody) { if (propertyReader.IsSimpleType(param.ParameterType)) { var expectedString = expectedValue != null?expectedValue.ToString() : null; values.Add(param.Name, expectedString); } else { var objectFieldValues = propertyReader.Properties(expectedValue); foreach (var field in objectFieldValues) { values.Add(field.Key.ToLowerInvariant(), field.Value); } } } } }
private IList <RouteValue> ReadParameters(MethodCallExpression methodCall) { var values = new List <RouteValue>(); var attributeRecogniser = new AttributeRecogniser(); var propertyReader = new PropertyReader(); var parameters = methodCall.Method.GetParameters(); var arguments = methodCall.Arguments; for (int i = 0; i < parameters.Length; i++) { var param = parameters[i]; var expectedValue = GetExpectedValue(arguments[i]); var isFromBody = attributeRecogniser.IsFromBody(param); var routeValueOrigin = isFromBody ? RouteValueOrigin.Body : RouteValueOrigin.Unknown; if (expectedValue != null || !isFromBody) { if (propertyReader.IsSimpleType(param.ParameterType)) { var resultValue = new RouteValue(param.Name, expectedValue, routeValueOrigin); values.Add(resultValue); } else { var objectFieldValues = propertyReader.PropertiesList(expectedValue, routeValueOrigin) .Where(x => x.Value != null); values.AddRange(objectFieldValues); } } } return(values); }
private static IList <RouteValue> ProcessActionParam(HttpParameterDescriptor param, IHttpRouteData routeDataValues) { var propertyReader = new PropertyReader(); if (propertyReader.IsSimpleType(param.ParameterType)) { return(ProcessSimpleActionParam(param, routeDataValues)); } return(ProcessCompoundActionParam(param, routeDataValues, propertyReader)); }
private static void ProcessActionParam(HttpParameterDescriptor param, HttpRouteData routeDataValues, Dictionary <string, string> result) { var propertyReader = new PropertyReader(); if (propertyReader.IsSimpleType(param.ParameterType)) { var paramName = param.ParameterName; AddParamWithRouteValue(paramName, routeDataValues.Values, result); } else { var fieldNames = propertyReader.SimplePropertyNames(param.ParameterType); foreach (var fieldName in fieldNames) { AddParamWithRouteValue(fieldName.ToLowerInvariant(), routeDataValues.Values, result); } } }
public void IntIsSimpleType() { Assert.That(reader.IsSimpleType(typeof(int)), Is.True); }