以下是我如何獲取名稱空間。你必須稍微修改我的代碼,你的情況:
NamespaceDeclarationSyntax namespaceDeclarationSyntax = null;
if (!SyntaxNodeHelper.TryGetParentSyntax(classDeclarationSyntax, out namespaceDeclarationSyntax))
{
return; // or whatever you want to do in this scenario
}
var namespaceName = namespaceDeclarationSyntax.Name.ToString();
var fullClassName = namespaceName + "." + classDeclarationSyntax.Identifier.ToString();
和助手:
public static async Task<NamespaceDeclarationSyntax> GetNamespaceAsync(this Document document, CancellationToken cancellationToken = default(CancellationToken))
{
SyntaxNode documentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
var rootCompUnit = (CompilationUnitSyntax)documentRoot;
return (NamespaceDeclarationSyntax)rootCompUnit.Members.Where(m => m.IsKind(SyntaxKind.NamespaceDeclaration)).Single();
}
據我所知,這些信息來自於語義樹。 – SLaks
我擔心你的權利與您的信息,我發現:http://social.msdn.microsoft.com/Forums/vstudio/en-US/bbb8c695-7555-4d27-b6ef-442f3f0492a5/getting-fulltypename-from-classdeclarationsyntax但是,對我來說似乎很醜陋。在我的情況下,如果壯舉這將花費大量的performacne的:-( –
由於有提到的,你可以通過遞歸地尋找空間聲明自己來建立。當心嵌套泛型類。 – SLaks