6

私のアプリケーションでは、アセンブリを解析してすべてのメソッドを抽出し、メソッドの名前とソース コードをオブジェクトの 1 つ (コードで定義したもの) に格納したいと考えています。

どこから実装を開始する必要がありますか?

編集:回答とコメントから、アセンブリからソースコードを取得するのはそれほど簡単ではないことがわかりました。次に、現在のソリューション (ビジュアル スタジオ) にないソース コード ファイルからソース コードを取得したい場合、どこから始めればよいでしょうか?

4

4 に答える 4

21

アセンブリにはソース コードが含まれていません。IL を抽出できる可能性がありますが、リフレクターや ildasm などのツールは特に役に立ちません。

メソッド名を取得するには、次のようにします。

    var assembly = Assembly.GetExecutingAssembly();
    var names = (from type in assembly.GetTypes()
                 from method in type.GetMethods(
                   BindingFlags.Public | BindingFlags.NonPublic |
                   BindingFlags.Instance | BindingFlags.Static)
                 select type.FullName + ":" + method.Name).Distinct().ToList();
于 2010-11-17T18:41:59.617 に答える
3

このデバッグ情報を取得するには、Common Compiler Infrastructure: Metadata APIプロジェクトを使用します。

.pdbこれにより、ファイル (ソース ファイルや行番号などのデバッグ情報を含むファイル)を読み取ることができます。

于 2010-11-17T18:44:57.417 に答える
2

まず、すべてのタイプを見つける必要があります。

これを行うには、ここを参照してください。

次に、各タイプのすべてのメソッドを見つける必要があります。

これを行うには、ここを参照してください。

すべてをまとめるための例が必要な場合は、お知らせください。

于 2010-11-17T18:41:45.360 に答える
0

ソース コードを取得する方法がわかりませんが、メソッドに関する情報を取得しようとしている場合は、リフレクションを使用する必要があります。

MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
                                                  BindingFlags.Static);
于 2010-11-17T18:42:16.180 に答える