2016-04-27 145 views
1

在解析器中使用Roslyn API的正确方法是什么? 假设我需要从context.Symbol获取信息,它是一个字段。 所以很明显我可以将它转换为IFieldSymbol,但我需要检查初始化文本。我如何获得底层SourceFieldSymbol的属性?它是内部的!如何使用内部Roslyn类?

反射? ;))))

回答

4

不这样做。
Roslyn有一个设计良好的公共API,它应该能够做你需要的任何事情(编辑器级别除外)。

在这种特殊情况下,您应该使用DeclaringSyntaxReferences property

一般而言,您可以使用http://source.roslyn.io/来追踪内部属性的引用树并找到公共API。

+0

是的,我预计API是好的,但如何达到领域的初始值? –

+0

对不起的人:)你绝对正确的API设计是非常好的。在我的情况下,我必须使用不同的处理程序:context.RegisterSyntaxNodeAction(AnalyzeObjectInitializer,SyntaxKind.FieldDeclaration);和类似fieldDeclaration.Declaration.Variables [n] .Initializer的东西 –

相关问题