/// <summary>Called when the visitor visits a NamespaceDeclarationSyntax node.</summary> public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node) { var u = _namespaces.Select(each => SyntaxFactory.UsingDirective(SyntaxFactory.ParseName($" {each}")) .WithLeadingTrivia(_leadingTrivia) .WithTrailingTrivia(_trailingTrivia) ).ToArray(); node = node.AddUsings(u); node = node.WithUsings(Sort(node.Usings)); return base.VisitNamespaceDeclaration(node); }
private static NamespaceDeclarationSyntax AddUsing(NamespaceDeclarationSyntax nspaceSyntax, UsingDirectiveSyntax newUsing) { if (nspaceSyntax.Usings.Count > 0) { var lastUsing = nspaceSyntax.Usings.Last(); newUsing = newUsing .WithLeadingTrivia(lastUsing.GetLeadingTrivia()) .WithTrailingTrivia(lastUsing.GetTrailingTrivia()); return nspaceSyntax.WithUsings(nspaceSyntax.Usings.Add(newUsing)); } return nspaceSyntax.WithUsings(nspaceSyntax.Usings.Add(newUsing.NormalizeWhitespace())); }
private static NamespaceDeclarationSyntax AmendUsings(NamespaceDeclarationSyntax nameSpace, SyntaxList<UsingDirectiveSyntax> usings) { var last = nameSpace.Name.ToString().Right(c => c != '.'); foreach (var item in usings) { var name = item.Name.ToString(); var first = name.Left(c => c != '.'); if (first == last) { usings = usings.Remove(item); usings = usings.Add(SyntaxFactory.UsingDirective(SyntaxFactory.ParseName("global::" + name))); } } return nameSpace.WithUsings(usings); }