2014-10-22 63 views
3

我试图查看语法树,但信息不够,所以我创建了一个汇编并获得了语法树的语义模型。现在,我可以使用OfType<T>扩展方法,属性和字段声明,其中TPropertyDeclarationSyntaxFieldDeclarationSyntax如何获取通过同一类的方法访问的字段和属性?

里面的方法。 Body.Statements我以为我可以寻找代表我从OfType<T>获得的符号。但我很难弄清楚这一部分。语法树只识别符号为“IdentifierName”,这是没有太大帮助的..

如果不看它,请让我知道正确的方法。

回答

4

PropertyDecalartionSyntax上使用SemanticModel.GetDeclaredSymbol()或在FieldDefinitionSyntax内使用VariableDeclaratorSyntax中的一个。然后在标识符上使用SemanticModel.GetSymbolInfo()并查看它们是否匹配。 (注意,您应该使用ISymbol.Equals,因为您可能得不到参考值相等的结果

+0

这确实有帮助虽然有一点需要注意'Field's,而不是盲目地将'FieldDeclarationSyntax'传递给'SemanticModel.GetDeclaredSymbol()'我们必须从每个Variables传入'FieldDeclarationSyntax.Declaration.Variable'原因是,字段声明可以用来声明多个字段,而不是属性,它只能声明一个符号。 – javaCity 2014-10-22 16:32:08

相关问题