【发布时间】:2015-10-22 07:42:03
【问题描述】:
如何在 CatchDeclaration 中获取实例的符号信息?基本上我想得到这个符号,以便稍后我可以比较它,看看在那个符号上调用了一个方法。
基本上我有这个:catch (Exception ex) {},我想要“ex”的 SymbolInfo。
我得到了 catch 声明:
var catchDeclaration = catchClause.DescendantNodes().OfType<CatchDeclarationSyntax>().FirstOrDefault();
但我似乎只能从声明 (catchDeclaration.Identifier) 中获取 SyntaxToken,它不能用于从语义模型中获取符号,因为它只需要一个 SyntaxNode。
【问题讨论】:
-
您正在使用语法模型,它只会为您提供没有语义的语法信息。您需要使用语义模型来获取该信息:joshvarty.wordpress.com/2014/10/30/…
-
@David 但我的问题是如果我有catchDeclaration,如何从语义模型中获取符号。还是在那个时间点已经太晚了,我必须更早地使用语义模型? (但我不明白我将如何通过语义模型获得 catch 声明或类似声明?)。基本上
model.GetSymbolInfo(catchDeclaration.Identifier)不起作用,因为标识符是令牌而不是节点。