3
회선 번호에 따라 SyntaxNode
을 얻으려면 어떻게해야합니까? 그렇지 않으면 노드에 그 줄 번호의 LineSpan
을 얻는 것이 가능하면 가능합니다.Roslyn의 회선 번호 받기
회선 번호에 따라 SyntaxNode
을 얻으려면 어떻게해야합니까? 그렇지 않으면 노드에 그 줄 번호의 LineSpan
을 얻는 것이 가능하면 가능합니다.Roslyn의 회선 번호 받기
문서 텍스트에서 한 줄의 범위를 가져올 수 있습니다. 여기에서 선의 스팬과 교차하는 모든 노드를 찾을 수 있습니다.
static void Main(string[] args)
{
var code = @"
using System;
namespace ConsoleApplication1
{
class TypeName
{
public int Add(int x, int y)
{
return x+y;
}
}
}";
var st = SourceText.From(code);
var sf = SyntaxFactory.ParseSyntaxTree(st);
var span = sf.GetText().Lines[9].Span;
var nodes = sf.GetRoot().DescendantNodes().Where(x => x.Span.IntersectsWith(span));
Console.WriteLine(nodes.Last().ToString());
Console.ReadKey();
}
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.Text;
var s = @"class M
{
public void P() { }
}";
var text = SourceText.From(s);
var lineIndex = 2;
var lineSpan = text.Lines[lineIndex].Span;
var tree = SyntaxFactory.ParseSyntaxTree(text);
var node = tree.GetRoot().FindNode(lineSpan);
// or if you want a all nodes related to the span
var node = tree.GetRoot().DescendantNodesAndSelf(lineSpan);
: 이것은 당신이 당신이 찾고있는 하나를 꺼내 기준을 사용할 수있는 여러 구문 노드를 반환합니다