private static UsingDirectiveSyntax GetNewUsingDirectiveSyntax(
            UsingDirectiveSyntax oldUsingDirective,
            string newName)
        {
            var isGlobalOrExternal = oldUsingDirective.DescendantNodes().OfType <AliasQualifiedNameSyntax>().Any() ||
                                     oldUsingDirective.DescendantNodes().OfType <ExternAliasDirectiveSyntax>().Any();

            if (newName == null || isGlobalOrExternal)
            {
                return(oldUsingDirective);
            }

            var newUsingDirective = SyntaxFactory.UsingDirective(SyntaxFactory.ParseName(newName))
                                    .WithUsingKeyword(oldUsingDirective.UsingKeyword)
                                    .WithSemicolonToken(oldUsingDirective.SemicolonToken);

            var nameEquals = oldUsingDirective
                             .ChildNodes()
                             .OfType <NameEqualsSyntax>()
                             .FirstOrDefault();

            if (nameEquals != null)
            {
                newUsingDirective = newUsingDirective.WithAlias(nameEquals);
            }

            return(newUsingDirective);
        }
コード例 #2
0
        private static SyntaxToken?GetFirstIdentifierInUsingDirective(UsingDirectiveSyntax usingDirective)
        {
            foreach (var identifier in usingDirective.DescendantNodes())
            {
                if (identifier is IdentifierNameSyntax identifierName &&
                    ExcludeGlobalKeyword(identifierName))
                {
                    return(identifierName.Identifier);
                }
            }

            return(null);
        }
コード例 #3
0
        private static SyntaxToken? GetFirstIdentifierInUsingDirective(UsingDirectiveSyntax usingDirective)
        {
            foreach (var identifier in usingDirective.DescendantNodes())
            {
                IdentifierNameSyntax identifierName = identifier as IdentifierNameSyntax;

                if (identifierName != null && ExcludeGlobalKeyword(identifierName))
                {
                    return identifierName.Identifier;
                }
            }

            return null;
        }
 private static bool HasNamespaceAliasQualifier(UsingDirectiveSyntax usingDirective) => usingDirective.DescendantNodes().Any(node => node.IsKind(SyntaxKind.AliasQualifiedName));
コード例 #5
0
 /// <summary>
 /// Check if the name of using directive contains a namespace alias qualifier.
 /// </summary>
 /// <param name="usingDirective">The <see cref="UsingDirectiveSyntax"/> that will be checked.</param>
 /// <returns>
 /// <see langword="true"/> if the <see cref="UsingDirectiveSyntax"/> contains a namespace alias qualifier;
 /// otherwise, <see langword="false"/>.
 /// </returns>
 internal static bool HasNamespaceAliasQualifier(this UsingDirectiveSyntax usingDirective) => usingDirective.DescendantNodes().Any(node => node.IsKind(SyntaxKind.AliasQualifiedName));
コード例 #6
0
 private static SyntaxToken? GetFirstIdentifierInUsingDirective(UsingDirectiveSyntax usingDirective) => usingDirective.DescendantNodes().OfType<IdentifierNameSyntax>().FirstOrDefault(ExcludeGlobalKeyword)?.Identifier;
コード例 #7
0
 private static bool IsGlobalOrExternal(UsingDirectiveSyntax node)
 {
     return(node.DescendantNodes().OfType <AliasQualifiedNameSyntax>().Any() ||
            node.DescendantNodes().OfType <ExternAliasDirectiveSyntax>().Any());
 }
コード例 #8
0
 private static SyntaxToken?GetFirstIdentifierInUsingDirective(UsingDirectiveSyntax usingDirective) => usingDirective.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault(ExcludeGlobalKeyword)?.Identifier;