System.Reflection没有方法

时间:2011-07-01 15:16:28

标签: c# .net reflection 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);
        }
    }

问题是任何模块都没有方法。我知道这与treeview无关,因为module.GetMethods()。长度返回0.我有什么遗漏吗?

1 个答案:

答案 0 :(得分:5)

您正在寻找程序集中 modules 中的方法,而不是程序集中的 types 。将你的循环改为:

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