コード例 #1
0
        public static Method GetMethod(string codeFile, string methodKey)
        {
            var syntaxTree = GetSyntaxTree(codeFile);

            var semanticModel = GetSemanticModel(syntaxTree);

            var mds = GetMethodDeclarationSyntax((CompilationUnitSyntax)syntaxTree.GetRoot(), methodKey, semanticModel);

            var statementInterpreterHandler = new StatementInterpreterHandler(mds, semanticModel);

            return(statementInterpreterHandler.GetMethod());
        }
コード例 #2
0
        public static CSharpLamdaExpression GetLamdaExpression(string codeFile, string methodName)
        {
            var syntaxTree = Helper.GetSyntaxTree(codeFile);

            var mds = Helper.GetMethodDeclarationSyntax((CompilationUnitSyntax)syntaxTree.GetRoot(), methodName);

            var semanticModel = Helper.GetSemanticModel(syntaxTree);
            var statementInterpreterHandler = new StatementInterpreterHandler(mds, semanticModel);

            var method = statementInterpreterHandler.GetMethod();

            var interpreterHandler = new ExpressionInterpreterHandler(method);

            var lamdaExpression = interpreterHandler.GetLamdaExpression();

            return(lamdaExpression);
        }
コード例 #3
0
        public CodeChangeRequest CompareTree(SyntaxTree newSyntaxTree, SyntaxTree oldSyntaxTree,
                                             SemanticModel semanticModel)
        {
            var codeChangesVisitor = new CodeChangesVisitor();

            codeChangesVisitor.Visit(newSyntaxTree, oldSyntaxTree);

            var updateMethods = new List <Method>();

            foreach (var mds in codeChangesVisitor.UpdatedMethods)
            {
                var interpreterHandler = new StatementInterpreterHandler(mds, semanticModel);

                var method = interpreterHandler.GetMethod();
                updateMethods.Add(method);
            }

            var request = new CodeChangeRequest();

            request.UpdateMethods = updateMethods;

            return(request);
        }