Отказ от ответственности: я работаю на 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;
Из заголовка видно, что вы начинаете с SyntaxNode
, поэтому вы можете просто использовать свойство Span
напрямую.