private async Task <Document> ExtractVariableDeclarationAsync(Document document, VariableDeclarationSyntax declaration, CancellationToken cancellationToken)
        {
            var oldClassNode = declaration.Ancestors(false).OfType <ClassDeclarationSyntax>().Single();

            _currentClassNode = oldClassNode;

            var semanticModel = await document.GetSemanticModelAsync(cancellationToken);

            _methodGenerator = new GenerateMethodFromStatementSyntaxWalker(semanticModel);
            _methodGenerator.VisitVariableDeclaration(declaration);

            RemoveVariableDeclarations();
            InsertExtractedMethods();
            ReplaceVariableCallsWithMethodCalls();

            var rootWithNewClass = document.GetSyntaxTreeAsync(cancellationToken).Result.GetRoot().ReplaceNode(oldClassNode, _currentClassNode);

            return(document.WithSyntaxRoot(rootWithNewClass));
        }
Ejemplo n.º 2
0
 public ExtractDeclarationSyntaxRewriter(SemanticModel semanticModel)
 {
     _semanticModel   = semanticModel;
     _methodGenerator = new GenerateMethodFromStatementSyntaxWalker(_semanticModel);
 }