我想达到什么
我想编写一个代码分析器,可以处理以下任何内容 ObjectCreationExpression
:
FruitMix fm = new FruitMix();
并允许我找出该类型实现的接口,如果找到特定接口则执行操作。
我试过的
我通过以下方式注册 SyntaxNodeAction 拦截了分析:
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(c=> AnalyzeObjectCreation(c), SyntaxKind.ObjectCreationExpression);
}
为了获得接口 ITypeSymbol 似乎是我试图在注册方法中获得的方式:
private static void AnalyzeObjectCreation(SyntaxNodeAnalysisContext context)
{
ObjectCreationExpressionSyntax objectCreation = (ObjectCreationExpressionSyntax) context.Node;
//How do I get an INamedTypeSymbol here?
//INamedTypeSymbol typeSyntax = (INamedTypeSymbol)objectCreation.Type;
//ISymbol test = typeSyntax.AssociatedSymbol;
//ISymbol test = context.SemanticModel.GetDeclaredSymbol(context.Node);
//SymbolInfo symbolInfo = context.SemanticModel.GetDeclaredSymbol()
}
如您所见,我已经尝试了所有可以在网上找到的方法,但均无济于事。也许我根本不应该寻找 INamedTypeSymbol - 如果是这样,我需要什么?
你能指出我正确的方向吗?