如何从 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()
.
如何从 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()
.