2
我有以下代碼:如何找到一個MethodDeclarationSyntax的所有使用與溶液中的羅斯林
var ws = new AdhocWorkspace();
var project = ws.AddProject("Sample", "C#");
ws.TryApplyChanges(project.Solution);
string text = @"
class C
{
private int counter = 0;
public void main()
{
Do();
}
public void Do()
{
counter++;
}
}
class D
{
private int counter = 0;
public void Foo()
{
var c = new C();
c.Do();
}
}";
var sourceText = SourceText.From(text);
var doc = ws.AddDocument(project.Id, "NewDoc", sourceText);
var model = doc.GetSemanticModelAsync().Result;
var methodDeclaration = doc.GetSyntaxRootAsync().Result.DescendantNodes().OfType<MethodDeclarationSyntax>().ToList()[1];
var invocationExpression = doc.GetSyntaxRootAsync().Result.DescendantNodes().OfType<InvocationExpressionSyntax>().ToList()[0];
//TODO: If I replace invocationExpression with methodDeclaration IT DOES NOT WORK
var methodSymbol = model.GetSymbolInfo(invocationExpression).Symbol;
//Finds all references to M()
var referencesToM = SymbolFinder.FindReferencesAsync(methodSymbol, doc.Project.Solution).Result;
我怎樣才能找到一個給定一個MethodDeclarationSyntax解決方案中所有的用法? (對於InvocationExpressionSyntax工程確定)
什麼** model.GetDeclaredSymbol(methodDeclaration)**?它是否會返回符號? –
是工程。您可以將其作爲答案發布。 –