コード例 #1
0
        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();
        }
コード例 #2
0
        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
            });
コード例 #3
0
 public BaseResolve(ExpressionParameter parameter)
 {
     Expression    = parameter.CurrentExpression;
     Context       = parameter.Context;
     BaseParameter = parameter;
 }