私たちの目標は、Roslynを使用してC#クラス用の抽象構文ツリーを構築することです。 AST全体を歩くのではなく、クラスの基本構造を見せたいだけです。例えば(MSDNから撮影):Roslyn APIから純粋な文字列としてコードを抽出
class TimePeriod
{
private double seconds;
public double Hours
{
get { return seconds/3600; }
set { seconds = value * 3600; }
}
}
は私たちが唯一の財産Hours
考えてみましょう。 String
として直接抽出したい2つのアクセサの本体については、修飾子(public
)、戻り値の型(double
)、識別子(Hours
)のトークンを抽出することにのみ関心があります。
しかし、アクセッサの身体を取得するときにroslyn(画面のダンプに表示されます)を歩くと、文字列全体を表すフィールドが見つかりませんでした。これを達成する正しい方法は何ですか?
が見える...ちょうどASTノードに '.ToString()'を呼び出す:) –
@LucasTrzesniewski、真剣に、私は試してみましょう....おかげでたくさん!すでに30分近く浪費されています。 – user1935724
これを行うにはいくつかの方法があることが判明したので、私は実際に答えを書きました。 –