我的分析仪我有以下注册:
public override void Initialize(AnalysisContext context)
{
context.RegisterCompilationStartAction(HandleCompilationStart);
}
private static void HandleCompilationStart(CompilationStartAnalysisContext context)
{
context.RegisterSyntaxNodeAction(
HandleTypeDeclaration,
ImmutableArray.Create(SyntaxKind.ClassDeclaration, SyntaxKind.StructDeclaration, SyntaxKind.InterfaceDeclaration));
}
private static void HandleTypeDeclaration(SyntaxNodeAnalysisContext context)
{
var x = context.SemanticModel.GetDeclaredSymbol(context.Node);
...
}
在HandleTypeDeclaration
我想访问分析器当前正在处理的类型,以检查该类型是否由我想用来标记不应分析的类型的某个属性归因(如在这个问题中)。
在我的本地窗口中,我看到SyntaxNodeAnalysisContext context
有一个名为的属性ContainingSymbol
,但是该成员没有出现在 Intellisense 中。我想出了猜测var x = ...
,但它总是等价的吗?我怎样才能ContainingSymbol
访问context
?这是获得封闭类型的正确方法吗?