2011-10-26 17 views

Trả lời

5

Tuyên bố từ chối trách nhiệm: Tôi làm việc cho Microsoft trong nhóm Roslyn.

Bạn có thể sử dụng phương thức ISyntaxTree.GetLineSpan() để chuyển đổi thành số dòng. Ví dụ, đưa ra một "biểu tượng" ISymbol, bạn có thể có được vị trí bắt đầu của định nghĩa đầu tiên với:

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

Từ tiêu đề, có vẻ như bạn đang bắt đầu với một SyntaxNode, vì vậy bạn chỉ có thể sử dụng Span tài sản trực tiếp.

+0

Tôi biết đó là một dự án đuôi dài, nhưng có liên kết đến tài liệu trực tuyến không? – casperOne

+0

Chúng tôi chưa có tài liệu ở định dạng MSDN. Gần nhất chúng tôi có vào lúc này là những tài liệu khác nhau tại http://msdn.com/roslyn –

+0

Tôi không thấy StartLinePosition đây 'public class MyVisitor: SyntaxRewriter { override bảo vệ SyntaxNode VisitClassDeclaration (ClassDeclarationSyntax nút) { Console.WriteLine (node.Identifier.ValueText); trả về null; } } ' –

Các vấn đề liên quan