Ejemplo n.º 1
0
        private Ust GetAnonymousMethod(LambdaExpressionSyntax node, ParameterDeclaration[] parameters)
        {
            var       idNameSyntax = node.Body as IdentifierNameSyntax;
            Statement bodyStatement;

            if (idNameSyntax != null)
            {
                bodyStatement = new ReturnStatement((Expression)VisitIdentifierName(idNameSyntax), node.Body.GetTextSpan());
            }
            else
            {
                var visited = base.Visit(node.Body);
                if (visited is Statement)
                {
                    bodyStatement = (Statement)visited;
                }
                else
                {
                    bodyStatement = new ExpressionStatement((Expression)visited, node.Body.GetTextSpan());
                }
            }
            var body = new BlockStatement(new[] { bodyStatement }, node.Body.GetTextSpan());

            var result = new AnonymousMethodExpression(parameters, body, node.GetTextSpan());

            return(result);
        }