本文整理汇总了C#中Microsoft.CodeAnalysis.SyntaxNode.GetEnclosingUsingDirectives方法的典型用法代码示例。如果您正苦于以下问题:C# SyntaxNode.GetEnclosingUsingDirectives方法的具体用法?C# SyntaxNode.GetEnclosingUsingDirectives怎么用?C# SyntaxNode.GetEnclosingUsingDirectives使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.SyntaxNode
的用法示例。
在下文中一共展示了SyntaxNode.GetEnclosingUsingDirectives方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetUsingNamespacesInScope
public static ISet<INamespaceSymbol> GetUsingNamespacesInScope(this SemanticModel semanticModel, SyntaxNode location)
{
// Avoiding linq here for perf reasons. This is used heavily in the AddImport service
HashSet<INamespaceSymbol> result = null;
foreach (var @using in location.GetEnclosingUsingDirectives())
{
if (@using.Alias == null)
{
var symbolInfo = semanticModel.GetSymbolInfo(@using.Name);
if (symbolInfo.Symbol != null && symbolInfo.Symbol.Kind == SymbolKind.Namespace)
{
result = result ?? new HashSet<INamespaceSymbol>();
result.Add((INamespaceSymbol)symbolInfo.Symbol);
}
}
}
return (ISet<INamespaceSymbol>)result ?? ImmutableHashSet<INamespaceSymbol>.Empty;
}
示例2: GetUsingDirectivesToAdd
private static IList<UsingDirectiveSyntax> GetUsingDirectivesToAdd(
SyntaxNode contextLocation, XElement snippetNode, XElement importsNode, CancellationToken cancellationToken)
{
var namespaceXmlName = XName.Get("Namespace", snippetNode.Name.NamespaceName);
var existingUsings = contextLocation.GetEnclosingUsingDirectives();
var newUsings = new List<UsingDirectiveSyntax>();
foreach (var import in importsNode.Elements(XName.Get("Import", snippetNode.Name.NamespaceName)))
{
var namespaceElement = import.Element(namespaceXmlName);
if (namespaceElement == null)
{
continue;
}
var namespaceToImport = namespaceElement.Value.Trim();
if (string.IsNullOrEmpty(namespaceToImport))
{
continue;
}
var candidateUsing = SyntaxFactory.ParseCompilationUnit("using " + namespaceToImport + ";").DescendantNodes().OfType<UsingDirectiveSyntax>().FirstOrDefault();
if (candidateUsing == null)
{
continue;
}
if (!existingUsings.Any(u => u.IsEquivalentTo(candidateUsing, topLevel: false)))
{
newUsings.Add(candidateUsing.WithAdditionalAnnotations(Formatter.Annotation).WithAppendedTrailingTrivia(SyntaxFactory.CarriageReturnLineFeed));
}
}
return newUsings;
}