.NET アセンブリからバイトコードをプリコンパイルするプログラムに取り組んでいます。このプログラム自体が .NET プログラムです。これまでのところ、リフレクションを使用して、バイトコード自体を含む必要なすべての情報を抽出できました。ただし、 の翻訳を実装する際に問題が発生しましたldfld
。
ldfld
同様の命令には、エンコード内にFieldRefまたはFieldDefを参照するメタデータ トークンがあります。これらは、アセンブリの PE ファイルに埋め込まれたメタデータ テーブルの要素であることを理解しています。最悪の場合、私は ECMA-335 からの十分な情報を持っているので、PE ファイルを開いて自分で調べることができます。リフレクションを介してこのルックアップを行います。
System.Reflection.Assembly
ただし、メタデータ トークンを検索するメソッドが見つからないようです。(見逃しただけかもしれません。) メタデータ (catch-22) が表示されるまで参照アセンブリしか知らないため、アセンブリよりも具体的なものを検索することはできません。実際、コメントに記載されているように、メタデータを調べるまで、フィールドがどのアセンブリで定義されているかさえわかりません。
リフレクション経由でそのようなメタデータ トークンを検索する方法はありますか?