如何从 class 语法树中获取 class 语义模型?

How to get class semantic model from class syntax tree?

如何从 Roslyn 中的 ClassDeclarationSyntax 获取 class 语义模型 (ITypeSymbol)?来自这个语法树:

在我看来,我唯一可以使用的点是 ClassDeclaration,因为像 IdentifierToken 这样的标记不能传递给 GetSymbolInfo 方法。但是当我写

context.SemanticModel.GetSymbolInfo(classDeclaration)

结果是

context.SemanticModel.GetSymbolInfo(classDeclaration)
{Microsoft.CodeAnalysis.SymbolInfo}
    CandidateReason: None
    CandidateSymbols: Length = 0
    IsEmpty: true
    Symbol: null
    _candidateSymbols: Length = 0

...所以不匹配。我想知道问题是否是我要求的语法元素错误,或者问题实际上是我在分析 class 的属性并且 class 本身尚未准备好时问的。

您可以使用 SemanticModel.GetDeclaredSymbol().