2011-07-01 67 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.是否有什麼我失蹤?

+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); 
}