SubExpression() public static method

public static SubExpression ( Expression expression ) : SubExpressionExpression
expression System.Linq.Expressions.Expression
return SubExpressionExpression
コード例 #1
0
 Expression Visit(Expression expression)
 {
     if (expression is HelperExpression helperExpression)
     {
         var originalArguments = helperExpression.Arguments.ToArray();
         var arguments         = ConvertTokens(originalArguments)
                                 .Cast <Expression>()
                                 .ToArray();
         if (!arguments.SequenceEqual(originalArguments))
         {
             return(HandlebarsExpression.Helper(
                        helperExpression.HelperName,
                        arguments,
                        helperExpression.IsRaw));
         }
     }
     if (expression is SubExpressionExpression subExpression)
     {
         Expression childExpression = Visit(subExpression.Expression);
         if (childExpression != subExpression.Expression)
         {
             return(HandlebarsExpression.SubExpression(childExpression));
         }
     }
     return(expression);
 }
コード例 #2
0
        protected virtual Expression VisitSubExpression(SubExpressionExpression subex)
        {
            Expression expression = Visit(subex.Expression);

            if (expression != subex.Expression)
            {
                return(HandlebarsExpression.SubExpression(expression));
            }
            return(subex);
        }
コード例 #3
0
        private static SubExpressionExpression BuildSubExpression(IEnumerator <object> enumerator)
        {
            object item = GetNext(enumerator);
            var    path = item as PathExpression;

            if (path == null)
            {
                throw new HandlebarsCompilerException("Found a sub-expression that does not contain a path expression");
            }
            var helperArguments = AccumulateSubExpression(enumerator);

            return(HandlebarsExpression.SubExpression(
                       HandlebarsExpression.Helper(
                           path.Path,
                           helperArguments)));
        }
コード例 #4
0
 protected override Expression VisitSubExpression(SubExpressionExpression subex)
 {
     return(HandlebarsExpression.SubExpression(
                Visit(subex.Expression)));
 }