如何在源代码生成器中查找 Class 声明的文件路径
How to Find File Path of Class Declaration in a Source Generator
标题几乎解释了它。我正在编写源代码生成器,想知道如何找到给定 ClassDeclarationSyntax
节点的文件路径。这是我希望如何使用它的示例。
IEnumerable<SyntaxNode> allNodes = compilation.SyntaxTrees.SelectMany(s => s.GetRoot().DescendantNodes());
IEnumerable<ClassDeclarationSyntax> allClasses = allNodes.Where(d => d.IsKind(SyntaxKind.ClassDeclaration))
.OfType<ClassDeclarationSyntax>();
IEnumerable<string> filePaths = allClasses.Select(x=> x.GetFilePath());
您可以使用以下代码获取包含文件路径:
SyntaxNode node = ...;
_ = node.SyntaxTree.FilePath;
_ = node.GetLocation().SourceTree?.FilePath // SourceTree can be null
标题几乎解释了它。我正在编写源代码生成器,想知道如何找到给定 ClassDeclarationSyntax
节点的文件路径。这是我希望如何使用它的示例。
IEnumerable<SyntaxNode> allNodes = compilation.SyntaxTrees.SelectMany(s => s.GetRoot().DescendantNodes());
IEnumerable<ClassDeclarationSyntax> allClasses = allNodes.Where(d => d.IsKind(SyntaxKind.ClassDeclaration))
.OfType<ClassDeclarationSyntax>();
IEnumerable<string> filePaths = allClasses.Select(x=> x.GetFilePath());
您可以使用以下代码获取包含文件路径:
SyntaxNode node = ...;
_ = node.SyntaxTree.FilePath;
_ = node.GetLocation().SourceTree?.FilePath // SourceTree can be null