2011-07-01 10 views
1

なし方法:するSystem.Reflection私はアセンブリ内のすべてのメソッドを列挙し、ツリービュー内のノードに追加しようとしている

private void bOpen_Click(object sender, EventArgs e) 
    { 
     var ofd = new OpenFileDialog(); 
     if (ofd.ShowDialog() != DialogResult.OK) 
      return; 

     var asm = Assembly.LoadFile(ofd.FileName); 
     foreach (Module module in asm.GetModules()) 
     { 
      var tnode = new TreeNode(module.Name); 
      foreach (MethodInfo method in module.GetMethods()) 
      { 
       tnode.Nodes.Add(method.Name); 
      } 
      treeView1.Nodes.Add(tnode); 
     } 
    } 

問題は何の方法は、任意のモジュールの下に来ないということです。 module.GetMethods()の長さが0を返すので、treeviewとは何の関係もないことが分かります。

+0

http://code.google.com/p/fseye/ –

答えて

5

アセンブリのタイプではなく、アセンブリ内のモジュールのメソッドを探しています。ループを次のように変更してください。

foreach (Type type in asm.GetTypes()) 
{ 
    var tnode = new TreeNode(type.Name); 
    foreach (MethodInfo method in type.GetMethods()) 
    { 
     tnode.Nodes.Add(method.Name); 
    } 
    treeView1.Nodes.Add(tnode); 
}