System.Reflection нет методов - PullRequest
       7

System.Reflection нет методов

1 голос
/ 01 июля 2011

Я пытаюсь перечислить все методы в сборке и добавить их к узлам в виде дерева:

    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 (). Length возвращает 0. Есть что-то, что я пропускаю?

1 Ответ

5 голосов
/ 01 июля 2011

Вы ищете методы в модулях в сборке, а не в типах в сборке.Измените ваш цикл на:

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