6

如何在源文件中找到声明所在的行号?

4

1 回答 1

7

免责声明:我在 Microsoft 的 Roslyn 团队工作。

您可以使用该ISyntaxTree.GetLineSpan()方法转换为行号。例如,给定一个ISymbol“符号”,您可以使用以下命令获取第一个定义的起始位置:

var loc = symbol.Locations.First();
var lineSpan = loc.SourceTree.GetLineSpan(loc.SourceSpan, 
    usePreprocessorDirectives: false);
var line = lineSpan.StartLinePosition.Line;
var character = lineSpan.StartLinePosition.Character;

从标题看,您似乎是从 a 开始的SyntaxNode,因此您可以直接使用该Span属性。

于 2011-10-26T20:02:48.170 回答