コード例 #1
0
        protected override Expression VisitLambda <T>(Expression <T> node)
        {
            if (expectLambdaVisit)
            {
                expectLambdaVisit = false;
            }
            else
            {
                LambdaExpressionPart newLambda = new LambdaExpressionPart(CurrentLambda);
                CurrentLambda.Body.StartLambda(newLambda);
                CurrentLiteral = newLambda.Parameters;
                CurrentLambda  = newLambda;
            }

            if (node.Parameters.Count == 1)
            {
                Visit(node.Parameters[0]);
            }
            else
            {
                VisitExpressions('(', node.Parameters, ')');
            }

            CurrentLiteral = CurrentLambda.Body.StartNewLiteral();

            Visit(node.Body);

            if (CurrentLambda.Parent != null)
            {
                CurrentLambda  = CurrentLambda.Parent;
                CurrentLiteral = CurrentLambda.Body.StartNewLiteral();
            }

            return(node);
        }
コード例 #2
0
 internal LambdaExpressionPart(LambdaExpressionPart parent)
 {
     Parent = parent;
 }
コード例 #3
0
ファイル: BodyExpressionPart.cs プロジェクト: ELPTFASSN/atata
 internal LambdaExpressionPart StartLambda(LambdaExpressionPart lambda)
 {
     subParts.Add(lambda);
     return(lambda);
 }