2

私は非常に単純なコード生成ツールを作成していますが、MSIL (または MethodInfo) オブジェクトを C# ソースに変換する機能が必要です。Reflector がこれをうまくやってのけることはわかっていますが、UI だけであるという不快な「機能」があります。

string.Format を使用して変数部分を挿入し、C# 文字列を直接生成できることはわかっていますが、プログラムでメソッド (たとえば、デリゲートまたは MethodInfo オブジェクト) を生成し、それらのメソッドをライターに渡すことができるようにしたいと考えています。それらをC#に変換します。

システム ライブラリを使用すると、実行時に C# ソース コード文字列からコンパイル済み (および実行可能) メソッドに簡単に変換できるのに、オブジェクトからソース コードに簡単に変換できないというのは、少しばかげているように思えます。

何か案は?

4

2 に答える 2

1

Reflector 用のこのアドインを使用すると、ファイルに出力でき、コマンド ラインから Reflector を実行できます。独自の逆コンパイラをロールするよりも、やりたいことを実行する方がおそらく簡単です。

Anakrinoは、コマンド ライン オプションを備えた別の逆コンパイラですが、.NET 1.1 以降は更新されていません。ただし、これはオープン ソースであるため、ソリューションのベースにすることができる場合があります。

于 2009-04-02T19:53:14.880 に答える
0

私たちのアプリケーションの一部として私が書いたコード ジェネレーターは を使用String.Formatしており、完全に満足しているわけではありませんがString.Format(Lisp マクロはいつでもそれを打ち負かしています)、問題なく機能します。とにかく、C# コンパイラは生成されたすべてのメソッドを再チェックするため、Reflection.Emit と (まだ作成されていない) MSIL から C# への逆コンパイラを往復しても何も得られません。

PS: 重いものを使用したい場合は、CodeDOM を使用しないでください。

于 2009-04-02T19:52:59.063 に答える