9

Roslynを使用して、C#コンパイラと同じコンパイル時変換を実行する組み込みの方法はありますか?たとえば、イテレータ、初期化子、ラムダ、LINQなどを基本的なC#コードに変換しますか?

4

2 に答える 2

5

RoslynコンパイラAPIは、(ソースコードをILに変換することに加えて)ソースコード分析および変換ツールを構築できるように設計されています。

ただし、ラムダとイテレータには、sourceを使用して常に指定できる変換はありません。これらは、ILを使用してのみ表現できる追加のコンパイラ固有のルールを含む内部バインドノード抽象化を使用してモデル化されます。

LINQはソースコード変換として指定されているため(コンパイラが実際にそのように実行するかどうかに関係なく)、C#でソースに変換することは可能ですが、これを具体的に実行するコンパイラAPIはありません。存在する場合は、コンパイラAPIではなくサービスレイヤーAPIとして表示される可能性があります。

于 2012-07-16T18:40:41.917 に答える
3

私の知る限り、いいえ、Roslyn で公開されているようなものはありません。internalしかし、コンパイラは何らかの方法でこれらの変換を行う必要があるため、何らかのメソッドにアクセスすることでこれを実行できる可能性があります。

もちろん、Roslyn を使用してこれらの変換を自分で行うこともできますが、それは求めていることではありません。

于 2012-07-15T18:51:13.247 に答える