コード例 #1
0
        private void InsertStatements(MethodDeclarationSyntax method, string[] statements, bool clear = false)
        {
            SyntaxList <StatementSyntax> currentStatements = new SyntaxList <StatementSyntax>();

            if (!clear)
            {
                currentStatements = method.Body.Statements;
            }

            var block = EvaluateStatements(statements);
            SyntaxAnnotation       annotation     = null;
            List <StatementSyntax> statementNodes = AnnotateStatements(block.Statements, out annotation);

            currentStatements = currentStatements.AddRange(statementNodes);

            var newBody   = method.Body.WithStatements(currentStatements);
            var newMethod = method.WithBody(newBody);

            Replace(method, newMethod, null);
            var annotatedNode = CurrentNode.GetAnnotatedNodes(annotation).First();

            if (annotatedNode != null)
            {
                NextStep(annotatedNode);
            }
        }
コード例 #2
0
        private void InsertStatements(SyntaxNode currentStatement, string[] statements, bool before = true)
        {
            var block = EvaluateStatements(statements);
            SyntaxAnnotation       annotation     = null;
            List <StatementSyntax> statementNodes = AnnotateStatements(block.Statements, out annotation);
            SyntaxNode             newNode        = null;

            if (before)
            {
                newNode = CurrentNode.InsertNodesBefore(currentStatement, statementNodes);
            }
            else
            {
                newNode = CurrentNode.InsertNodesAfter(currentStatement, statementNodes);
            }

            Replace(CurrentNode, newNode, null);
            var annotatedNode = CurrentNode.GetAnnotatedNodes(annotation).First();

            if (annotatedNode != null)
            {
                NextStep(annotatedNode);
            }
        }