Узел VisitClassDeclaration. Идентификатор в Рослине - PullRequest
5 голосов
/ 26 октября 2011

Как мне узнать, по какому номеру строки в исходном файле была найдена декларация?

1 Ответ

6 голосов
/ 27 октября 2011

Отказ от ответственности: я работаю на 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 напрямую.

...