public async TaskGetSymbolAsync(Document document, SyntaxNode identifier, CancellationToken cancellationToken) { var semanticModel = await document.GetSemanticModelAsync(cancellationToken); var symbol = semanticModel.GetSymbolInfo(identifier).Symbol; return new MySymbol(symbol); }
public async TaskThis code retrieves the SemanticModel for all documents in a given Solution, specified by the `solution` variable. It then uses the `GetDeclaredSymbol` method of the SemanticModel to get the INamedTypeSymbol, which represents the symbol for the top-level type declared in the SyntaxTree. It then checks whether the name of the type is equal to a specified className, and adds the document to a list if it is. Package/Library: Microsoft.CodeAnalysis.CSharp.> FindDocumentsWithClassAsync(Solution solution, string className, CancellationToken cancellationToken) { var documents = solution.Projects.SelectMany(p => p.Documents); var result = new List (); foreach (var document in documents) { var semanticModel = await document.GetSemanticModelAsync(cancellationToken); var classSymbol = semanticModel.GetDeclaredSymbol(semanticModel.SyntaxTree.GetRoot(cancellationToken)) as INamedTypeSymbol; if (classSymbol?.Name == className) { result.Add(document); } } return result; }