c# - 如何在源生成器中查找类声明的文件路径
问题描述
标题几乎解释了它。我正在编写一个源生成器,并且想知道如何找到给定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
推荐阅读
- angular - WebStorm 调试 Angular CLI 应用程序指向 localhost:63276
- linux - 将 eBPF 字节码附加到 SOCK_STREAM 套接字
- mysql - 在 Centos 7 上安装新的 Mysql 5.7 后清空 mysqld.log
- php - 无法删除以 PHP 结尾的奇怪返回字符/行
- bash - 乳胶的字符串操作
- arrays - 在 Swift 4 中的自定义“indexOf”函数中获取第一个索引
- c# - 使用 Microsoft Bot Framework V4 主动向 Microsoft Teams 中的团队聊天发送消息
- c - scanf 在 scanf 的行上产生 segfault
- tensorflow - tf.contrib.lookup.index_table_from_tensor 的选项
- r - 在 ggplot 中指定置信区间带的颜色