2016-04-27 9 views
1

Was ist der richtige Weg für die Verwendung von Roslyn API in Analizern? Sagen wir, ich muss Informationen aus context.Symbol holen und es ist ein Feld. Es ist also offensichtlich, dass ich es in IFieldSymbol umwandeln kann, aber ich muss Initialisierungstext überprüfen. Wie kann ich Eigenschaften des zugrunde liegenden SourceFieldSymbols erhalten? Es ist Intern!Wie interne Roslyn Klassen zu verwenden?

Reflexion? ;))))

Antwort

4

Tun Sie das nicht.
Roslyn hat eine gut gestaltete öffentliche API, die in der Lage sein sollte, alles zu tun, was Sie brauchen (außer auf der Editor-Ebene). In diesem speziellen Fall sollten Sie DeclaringSyntaxReferences property verwenden.

Im Allgemeinen können Sie http://source.roslyn.io/ verwenden, um den Baum der Verweise auf eine interne Eigenschaft zu verfolgen und die öffentliche API zu finden.

+0

Ja, ich habe erwartet, dass API ist gut, aber wie Initialisierer des Feldes zu erreichen? –

+0

Sorry man :) Du hast absolut recht das API Design ist sehr gut. In meinem Fall muss ich einen anderen Handler verwenden: context.RegisterSyntaxNodeAction (AnalyzeObjectInitializer, SyntaxKind.FieldDeclaration); und etwas wie fieldDeclaration.Declaration.Variables [n] .Initializer –