2011-10-26 9 views

risposta

5

Disclaimer: Lavoro per Microsoft nel team di Roslyn.

È possibile utilizzare il metodo ISyntaxTree.GetLineSpan() per convertire in un numero di riga. Ad esempio, dato un "simbolo" ISymbol, è possibile ottenere la posizione di partenza della prima definizione con:

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

Dal titolo, sembra che si sta iniziando con un SyntaxNode, quindi si può semplicemente utilizzare il Span proprietà direttamente.

+0

So che si tratta di un progetto a coda lunga, ma esiste un collegamento alla documentazione online? – casperOne

+0

Non abbiamo ancora la documentazione nel formato MSDN. Il più vicino che abbiamo in questo momento sono i vari documenti fino a http://msdn.com/roslyn –

+0

non vedo l'StartLinePosition qui 'public class MyVisitor: SyntaxRewriter { protected override SyntaxNode VisitClassDeclaration (nodo ClassDeclarationSyntax) { Console.WriteLine (node.Identifier.ValueText); return null; } } ' –