達成したいこと
次のようなものを拾うコードアナライザーを書きたいと思います 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 をまったく探すべきではありません - もしそうなら、何が必要ですか?
正しい方向に私を向けることができますか?