bool IsMethodCall(Expression expression) { if (expression is MethodCallExpression) { var callExpression = expression as MethodCallExpression; return(EqualsExtensions.IsAnyEqualsIgnoreCase(IsMethod.isContains, IsMethod.isEmpty)); } return(false); }
public override void ExecuteResult(ActionContext context) { var response = context.HttpContext.Response; var isMultiPart = context.HttpContext.Request.ContentType.Contains("multipart/form-data"); var isIe = EqualsExtensions.IsAnyEqualsIgnoreCase("IE"); response.ContentType = isMultiPart && isIe ? "text/html" : "application/json"; using (StreamWriter tw = new StreamWriter(response.Body)) { tw.Write(Data.ToJsonString()); } }
public override async Task ExecuteResultAsync(ActionContext context) { var response = context.HttpContext.Response; bool?isMultiPart = context.HttpContext.Request.ContentType?.Contains("multipart/form-data"); var isIe = EqualsExtensions.IsAnyEqualsIgnoreCase("IE"); response.ContentType = isMultiPart.GetValueOrDefault() && isIe ? "text/html" : "application/json"; using (StreamWriter tw = new StreamWriter(response.Body)) { await tw.WriteAsync(Data.ToJsonString()); } }
public ResultSelector For <T>(Expression <Func <T, object> > property) { bool isMethod = property.Body is MethodCallExpression; if (isMethod) { var body = (MethodCallExpression)property.Body; bool isSelect = EqualsExtensions.IsAnyEqualsIgnoreCase("Select"); if (isSelect) { var left = (MemberExpression)body.Arguments[0]; var right = (LambdaExpression)body.Arguments[1]; return(new ResultSelector(this.currentType, "{0}.{1}({2})".F(left.Member.Name, body.Method.Name, ((MemberExpression)right.Body).Member.Name))); } bool isIndex0 = EqualsExtensions.IsAnyEqualsIgnoreCase("First", "FirstOrDefault"); if (isIndex0) { var left = (MemberExpression)body.Arguments[0]; return(new ResultSelector(this.currentType, "{0}[0]".F(left.Member.Name))); } bool isByIndex = EqualsExtensions.IsAnyEqualsIgnoreCase("ElementAt", "ElementAtOrDefault"); if (isByIndex) { var left = (MemberExpression)body.Arguments[0]; var right = (ConstantExpression)body.Arguments[1]; return(new ResultSelector(this.currentType, "{0}[{1}]".F(left.Member.Name, right.Value))); } } if (property.Body.NodeType == ExpressionType.Convert) { var expression = (UnaryExpression)property.Body; if (expression.Operand.NodeType != ExpressionType.MemberAccess) { var body = (MethodCallExpression)expression.Operand; bool isAny = EqualsExtensions.IsAnyEqualsIgnoreCase("Any"); if (isAny) { var left = (MemberExpression)body.Arguments[0]; var right = new ConditionalIs(((LambdaExpression)body.Arguments[1]).Body, false, true); dynamic data = right.GetData(); return(new ResultSelector(this.currentType, string.Format("{0}.Any({1} {2} {3} {4})", left.Member.Name, data.left, data.method, data.right, data.inverse))); } } } return(new ResultSelector(this.currentType, ReflectionExtensions.GetMemberName((LambdaExpression)property))); }