gpt4 book ai didi

c# - 从 HandleTypeDeclaration(...) 中的 SyntaxNodeAnalysisContext 获取封闭类型

转载 作者:行者123 更新时间:2023-11-30 23:26:09 25 4
gpt4 key购买 nike

我的分析仪我有以下注册:

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 中,我想访问分析器当前正在处理的类型,以检查该类型是否归因于我想用来标记不应分析的类型的某些属性(如this question ).

在我的本地窗口中,我看到 SyntaxNodeAnalysisContext context 有一个名为 ContainingSymbol 的属性,但是这个成员没有出现在 Intellisense 中。我想出了一个猜测 var x = ... 但它总是等价的吗?如何在 context 上访问 ContainingSymbol?这是获取封闭类型的正确方法吗?

locals window

最佳答案

在版本 1.0.0 中,SyntaxNodeAnalysisContext 不包含属性 ContainingSymbol。 VS 看到它是因为您有一个已经包含它的更新。

如果您在 VS 2015 RTM 之前有向后兼容性要求,那么您别无选择,只能使用 context.SemanticModel.GetDeclaredSymbol(context.Node),它适用于 Roslyn 1.0。这应该等同于较新 Roslyn 版本中的 context.ContainingSymbol

关于c# - 从 HandleTypeDeclaration(...) 中的 SyntaxNodeAnalysisContext 获取封闭类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com