1

スタック オーバーフローに関するいくつかの回答では、通常のリフレクションを使用して .NET アセンブリからソース コードを取得することは不可能であり、IL コードにしかアクセスできないと述べています。

私のプロジェクトでは、サード パーティがいくつかの基本的な C# コードを私が作成したプロジェクト テンプレートに書き込み、.NET dll をビルドします。これらのdllからいくつかの情報を引き出す必要があります。情報の一部を収集するには、dll を呼び出す必要があります。これにはリフレクションを使用します。残念ながら、特定のメソッドのソース コードも入手する必要があります。

cs ファイルを解析できました。大きな問題にはなりませんが、疑問に思っていました。私はすでにリフレクションを使用する必要があり、プロジェクト テンプレートは完全に私の管理下にあるため、ソース コードの一部を意図的に公開するために何かを行うことはできますか (おそらく、コンパイル時にリソースにビルドするか、同様に風変わりな何かを作成します)。

ありがとう

4

1 に答える 1

0

奇抜なことに言及したので、技術的には、メソッドのテキストだけであるプロパティを公開することができます。そうすれば、リフレクションを使用してプロパティ値を取得できます。定数を返す準備ができているだけのプロパティである可能性があります。2 つの場所で変更する必要があるため、メソッドが変更された場合に維持するのは面倒です。

これを処理するもう 1 つの奇抜な方法は、上記に関連していますが、上記で作成した文字列プロパティをメソッド テキストとして使用することです。次に、メソッドを持っていた実際のクラスで、テキストを動的に取得し、その場で構築して実行することができます。これにより、2 か所で変更する問題が解決されます。ただし、これはおそらくパフォーマンスの悪夢ですが、可能だと思われます。

動的コードをコンパイルして実行する方法に関するいくつかのサンプル記事を次に示します: http://www.codeproject.com/Articles/5472/Compiling-NET-code-on-the-fly

http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm

于 2012-11-29T21:54:42.243 に答える