1

始める前に、私の経験をお話しさせてください。私は C#.NET、Web サービス、XML 部分などの経験があります。リフレクションは私にとって新しいものですが、私はそれについて広範囲に読んで実験的なコードを試しましたが、リフレクションを使用して素晴らしいものを作ったことはありません

many examples実行時に Type を作成する方法と、アセンブリ (.dll) ファイルに保存できる方法を確認しました。私が見たすべての例は、作成された型をコード ファイルではなく .dll ファイルに保存することに関するものです。リフレクションからコード ファイルを作成する方法はありませんか?

コンパイル済みアセンブリの代わりにコードを配布したいので、コード ファイルを作成する必要があります。私がやりたいのはxsd.exe、.dllまたはコードファイル(任意の言語)を吐き出すようなものです。

私が見つけることができる場所のほとんどは

AssemblyBuilder ab = System.AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save);

そして最後に

ab.Save("QuoteOfTheDay.dll");
4

2 に答える 2

4

.NET フレームワークに組み込まれている逆アセンブラーはありません。Reflector を使用して、発行した IL を、サポートされているソース コード言語のいずれかに変換できます。これが問題なく動作する可能性は非常に低いです。Reflector は、コンパイラによって生成されたコードをソース コードに戻すように設計されています。System.Reflection.Emit が提供する何でもありのアプローチとは異なり、コンパイラは生成する IL について保守的である傾向があります。

ソースコードが必要な場合は、最初にそれを生成するのが最善です。System.CodeDom を使用します。それが System.Xml.Serialization が使用するものです。

于 2010-04-03T17:20:06.867 に答える
2

通常、文字列クラスまたは CodeDOM ( http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx ) を使用して C# ソースを生成します。

于 2010-04-03T15:51:55.560 に答える