コード例 #1
0
        async Task <Document> ImportStaticClassWithUsing(Document document, SemanticModel model, SyntaxNode root, SyntaxNode node, SymbolInfo info, CancellationToken cancellationToken)
        {
            var cu          = root as CompilationUnitSyntax;
            var staticUsing = SyntaxFactory
                              .UsingDirective(SyntaxFactory.ParseName(info.Symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat)))
                              .WithStaticKeyword(SyntaxFactory.Token(SyntaxKind.StaticKeyword))
                              .WithAdditionalAnnotations(Formatter.Annotation);

            cu = cu.AddUsingDirective(staticUsing, node, true);
            var newDoc = document.WithSyntaxRoot(cu);

            var newModel = await newDoc.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false);

            var visitor = new SearchImportReplacementsVisitor(newModel, info, cancellationToken);
            var newRoot = await newModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);

            visitor.Visit(newRoot);
            cu = (CompilationUnitSyntax)newRoot.TrackNodes(visitor.ReplaceNodes);

            foreach (var ma in visitor.ReplaceNodes)
            {
                var current = cu.GetCurrentNode <MemberAccessExpressionSyntax>(ma);
                cu = cu.ReplaceNode(current, current.Name.WithAdditionalAnnotations(Formatter.Annotation));
            }

            return(document.WithSyntaxRoot(cu));
        }
        Document ImportStaticClassWithUsing(Document document, SemanticModel model, SyntaxNode root, SyntaxNode node, SymbolInfo info, CancellationToken cancellationToken)
        {
            var cu = root as CompilationUnitSyntax;

            var visitor = new SearchImportReplacementsVisitor(model, info, cancellationToken);
            visitor.Visit(root);
            cu = (CompilationUnitSyntax)root.TrackNodes(visitor.ReplaceNodes);

            foreach (var ma in visitor.ReplaceNodes)
            {
                var current = cu.GetCurrentNode<MemberAccessExpressionSyntax>(ma);
                cu = cu.ReplaceNode(current, current.Name.WithAdditionalAnnotations(Formatter.Annotation));
            }

            var staticUsing = SyntaxFactory
                .UsingDirective(SyntaxFactory.ParseName(info.Symbol.ToDisplayString(SymbolDisplayFormat.CSharpErrorMessageFormat)))
                .WithStaticKeyword(SyntaxFactory.Token(SyntaxKind.StaticKeyword))
                .WithAdditionalAnnotations(Formatter.Annotation);
            cu = cu.AddUsingDirective(staticUsing, node, true);

            return document.WithSyntaxRoot(cu);
        }