我如何在源文件中找到声明所在的行号?
最佳答案
免责声明:我在Roslyn团队为Microsoft工作。
您可以使用ISyntaxTree.GetLineSpan()
方法转换为行号。例如,给定一个ISymbol
“symbol”,您可以使用以下命令获取第一个定义的开始位置:
var loc = symbol.Locations.First();
var lineSpan = loc.SourceTree.GetLineSpan(loc.SourceSpan,
usePreprocessorDirectives: false);
var line = lineSpan.StartLinePosition.Line;
var character = lineSpan.StartLinePosition.Character;
从标题看来,您似乎是从
SyntaxNode
开头的,因此您可以直接使用Span
属性。