모든 프로젝트 파일에 대해 모두 SyntaxTree
에 대해 편집을 만들어야합니다. 그 후 어떤 노드에 대해서도 심볼 정보를 사용할 수 있습니다 :
static string Code =
@"namespace TestNamespace
{
public class Test
{
public int A { get; set; }
public int B { get; set; }
public Test(int a, int b)
{
A = a;
B = b;
}
}
}";
static void Main(string[] args)
{
var syntaxTree = CSharpSyntaxTree.ParseText(Code);
var syntaxTrees = new SyntaxTree[] { syntaxTree }; // Add SyntaxTree array from project files.
var compilation = CSharpCompilation.Create("tempAssembly", syntaxTrees);
var semanticModel = compilation.GetSemanticModel(syntaxTree);
var caretPosition = 46;
var symbol = SymbolFinder.FindSymbolAtPositionAsync(semanticModel, caretPosition, new AdhocWorkspace()).Result;
var fullName = symbol.ToString(); // fullName is "TestNamespace.Test"
}
감사합니다! 거기에 좋은 튜토리얼/가이드에 대한 기호가 있습니까? roslyn 튜토리얼은 기호와 사용법을 이해하는데 많은 도움이되었습니다. –
여러 식별자가있는 함수 호출을 호출하는 방법은 어떻습니까? 'test.ToString(). ToUpper(). contains ("asd")', Roslyn의 Symbol API/Semantic Modeling은 어떻게 분석 할 수 있습니까? –