【发布时间】:2018-03-08 05:16:16
【问题描述】:
我有一个实现 CSharpSyntaxRewriter 的 CustomRewriter。在 VisitClassDeclaration 或 VisitMethodDeclaration 中,我需要检查该类可能实现的任何接口。
原因是 VisitMethodDeclaration 正在寻找进行数据调用的方法,并向该方法添加参数。这是有效的。但是,如果修改了方法签名,我需要它来检查更改的方法是否来自已实现的接口,如果确实如此,则还要修改接口。
我无法找到从类和方法声明节点参数以及语法树或语法节点中获取此信息的方法。我还添加了 Compilation 作为 Constructor Parm,以便使用它来获取 SchematicModel 并以某种方式从那里开始,但没有任何运气。
public class DetermineIfInterfaceMethodRewriter : CSharpSyntaxRewriter
{
private string Test = string.Empty;
private Compilation comp;
public DetermineIfInterfaceMethodRewriter(Compilation compilation)
{
this.comp = compilation;
}
public override SyntaxNode VisitClassDeclaration(ClassDeclarationSyntax node)
{
return base.VisitClassDeclaration(node);
}
public override SyntaxNode VisitMethodDeclaration(MethodDeclarationSyntax node)
{
var tree = node.SyntaxTree;
var root = tree.GetRoot();
return node;
}
}
【问题讨论】: