예제 #1
0
        public Statement GetStatement()
        {
            var lamdaStatement = new LamdaStatement();

            var parameters = anonymousMethodExpressionSyntax.ParameterList?.Parameters
                             .Select(x => statementInterpreterHandler.GetStatement(x));

            lamdaStatement.Parameters = parameters?.Cast <Parameter>()?.ToArray() ?? new Parameter[0];

            lamdaStatement.Body = statementInterpreterHandler.GetStatement(anonymousMethodExpressionSyntax.Body);

            var typeInfo = semanticModel.GetTypeInfo(anonymousMethodExpressionSyntax);

            lamdaStatement.Type = typeInfo.ConvertedType.GetClassType();

            return(lamdaStatement);
        }
예제 #2
0
        public Statement GetStatement()
        {
            var lamdaStatement = new LamdaStatement();

            var parameters = parenthesizedLambdaExpressionSyntax.ParameterList.Parameters
                             .Select(x => statementInterpreterHandler.GetStatement(x));

            lamdaStatement.Parameters = parameters.Cast <Parameter>().ToArray();

            lamdaStatement.Body = statementInterpreterHandler.GetStatement(parenthesizedLambdaExpressionSyntax.Body);

            var typeInfo = semanticModel.GetTypeInfo(parenthesizedLambdaExpressionSyntax);

            lamdaStatement.Type = typeInfo.ConvertedType.GetClassType();

            lamdaStatement.IsAsync = parenthesizedLambdaExpressionSyntax.AsyncKeyword.IsKind(Microsoft.CodeAnalysis.CSharp.SyntaxKind.AsyncKeyword);

            return(lamdaStatement);
        }
 public LamdaExpressionInterpreter(ExpressionInterpreterHandler expressionInterpreterHandler, LamdaStatement lamdaStatement, System.Collections.Generic.List <ParameterExpression> parameterExpressions)
 {
     this.expressionInterpreterHandler = expressionInterpreterHandler;
     this.lamdaStatement       = lamdaStatement;
     this.parameterExpressions = parameterExpressions;
 }