本文整理汇总了C#中Microsoft.CodeAnalysis.SemanticModel.GetUsingNamespacesInScope方法的典型用法代码示例。如果您正苦于以下问题:C# SemanticModel.GetUsingNamespacesInScope方法的具体用法?C# SemanticModel.GetUsingNamespacesInScope怎么用?C# SemanticModel.GetUsingNamespacesInScope使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.CodeAnalysis.SemanticModel
的用法示例。
在下文中一共展示了SemanticModel.GetUsingNamespacesInScope方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetNamespacesToReallyAdd
static ImmutableList<string> GetNamespacesToReallyAdd(SyntaxNode relativeToNode, SemanticModel semanticModel,
ImmutableHashSet<string> namespaceQualifiedStrings)
{
var alreadyInScope = semanticModel
.GetUsingNamespacesInScope(relativeToNode)
.Select(ns => ns.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat))
.ToImmutableHashSet();
var toReallyAdd = namespaceQualifiedStrings
.Where(ns => !alreadyInScope.Contains(ns))
.ToImmutableList();
return toReallyAdd;
}
示例2: GetNamespacesInScope
protected override ISet<INamespaceSymbol> GetNamespacesInScope(
SemanticModel semanticModel,
SyntaxNode node,
CancellationToken cancellationToken)
{
return semanticModel.GetUsingNamespacesInScope(node);
}
示例3: IsNamespaceInUsing
public static bool IsNamespaceInUsing(SemanticModel semanticModel, SyntaxNode forNode, INamespaceSymbol ns)
{
return semanticModel.GetUsingNamespacesInScope(forNode).Any(usingNamespace => usingNamespace.Equals(ns));
}
示例4: GetExtensionMethods
IEnumerable<IMethodSymbol> GetExtensionMethods (SemanticModel semanticModel, ITypeSymbol typeToExtend, InvocationExpressionSyntax node, CancellationToken cancellationToken)
{
var usedNamespaces = new HashSet<string> ();
foreach (var un in semanticModel.GetUsingNamespacesInScope (node)) {
usedNamespaces.Add (un.GetFullName ());
}
var enclosingNamespaceName = semanticModel.GetEnclosingNamespace (node.SpanStart, cancellationToken).GetFullName ();
var stack = new Stack<INamespaceOrTypeSymbol> ();
stack.Push (semanticModel.Compilation.GlobalNamespace);
while (stack.Count > 0) {
if (cancellationToken.IsCancellationRequested)
break;
var current = stack.Pop ();
var currentNs = current as INamespaceSymbol;
if (currentNs != null) {
foreach (var member in currentNs.GetNamespaceMembers ()) {
var currentNsName = member.GetFullName ();
if (usedNamespaces.Contains (currentNsName) ||
enclosingNamespaceName == currentNsName ||
(enclosingNamespaceName.StartsWith (currentNsName, StringComparison.Ordinal) &&
enclosingNamespaceName [currentNsName.Length] == '.')) {
stack.Push (member);
}
}
foreach (var member in currentNs.GetTypeMembers ())
stack.Push (member);
} else {
var type = (INamedTypeSymbol)current;
if (type.IsImplicitClass || type.IsScriptClass)
continue;
if (type.DeclaredAccessibility != Accessibility.Public) {
if (type.DeclaredAccessibility != Accessibility.Internal)
continue;
if (!type.IsAccessibleWithin (semanticModel.Compilation.Assembly))
continue;
}
if (!type.MightContainExtensionMethods)
continue;
foreach (var extMethod in type.GetMembers ().OfType<IMethodSymbol> ().Where (method => method.IsExtensionMethod)) {
var reducedMethod = extMethod.ReduceExtensionMethod (typeToExtend);
if (reducedMethod != null) {
yield return reducedMethod;
}
}
}
}
}