public MethodCallExpressionResolve(ExpressionParameter parameter) : base(parameter) { var express = Expression as MethodCallExpression; if (express == null) { return; } var methodName = express.Method.Name; if (methodName == "Contains") { Context.LastQueryBase = new QueryStringQuery(); NativeExtensionMethod(express); } Context.SetQuery(); }
public BaseResolve Start() { var expression = Expression; var parameter = new ExpressionParameter { Context = Context, CurrentExpression = expression, BaseExpression = ExactExpression, BaseParameter = BaseParameter }; return(expression switch { //else if (expression is BinaryExpression && expression.NodeType == ExpressionType.Coalesce) //{ // return new CoalesceResolveItems(parameter); //} LambdaExpression _ => new LambdaExpressionResolve(parameter), //else if (expression is BlockExpression) //{ // Check.ThrowNotSupportedException("BlockExpression"); //} //else if (expression is ConditionalExpression) //{ // return new ConditionalExpressionResolve(parameter); //} BinaryExpression _ => new BinaryExpressionResolve(parameter), //else if (expression is MemberExpression && ((MemberExpression)expression).Expression == null) //{ // return new MemberNoExpressionResolve(parameter); //} MethodCallExpression _ => new MethodCallExpressionResolve(parameter), //else if (expression is MemberExpression && ((MemberExpression)expression).Expression.NodeType == ExpressionType.New) //{ // return new MemberNewExpressionResolve(parameter); //} MemberExpression memberExpression when memberExpression.Expression.NodeType == ExpressionType.Constant => new MemberConstExpressionResolve(parameter), ConstantExpression _ => new ConstantExpressionResolve(parameter), MemberExpression _ => new MemberExpressionResolve(parameter), _ => null });
public BaseResolve(ExpressionParameter parameter) { Expression = parameter.CurrentExpression; Context = parameter.Context; BaseParameter = parameter; }