private static bool IsNamespace( INamespaceSymbol namespaceSymbol, NameSyntax name, SemanticModel semanticModel, CancellationToken cancellationToken) { if (name != null) { ISymbol symbol = semanticModel.GetSymbol(name, cancellationToken); if (symbol?.IsNamespace() == true) { string namespaceText = namespaceSymbol.ToString(); if (string.Equals(namespaceText, symbol.ToString(), StringComparison.Ordinal)) { return(true); } else if (name.IsParentKind(SyntaxKind.NamespaceDeclaration)) { foreach (INamespaceSymbol containingNamespace in symbol.ContainingNamespaces()) { if (string.Equals(namespaceText, containingNamespace.ToString(), StringComparison.Ordinal)) { return(true); } } } } } return(false); }
public static bool IsNamespaceInScope( SyntaxNode node, INamespaceSymbol namespaceSymbol, SemanticModel semanticModel, CancellationToken cancellationToken = default(CancellationToken)) { if (node == null) { throw new ArgumentNullException(nameof(node)); } if (namespaceSymbol == null) { throw new ArgumentNullException(nameof(namespaceSymbol)); } if (semanticModel == null) { throw new ArgumentNullException(nameof(semanticModel)); } foreach (NameSyntax name in NamespacesInScope(node)) { ISymbol symbol = semanticModel.GetSymbol(name, cancellationToken); if (symbol?.IsNamespace() == true) { string namespaceText = namespaceSymbol.ToString(); if (string.Equals(namespaceText, symbol.ToString(), StringComparison.Ordinal)) { return(true); } else if (name.IsParentKind(SyntaxKind.NamespaceDeclaration)) { foreach (INamespaceSymbol containingNamespace in symbol.ContainingNamespaces()) { if (string.Equals(namespaceText, containingNamespace.ToString(), StringComparison.Ordinal)) { return(true); } } } } } return(false); }