列出程序集中指定类的所有方法

时间:2017-12-27 21:37:48

标签: .net vb.net .net-assembly

我想从外部程序集中列出Public方法。这项工作到目前为止。我的问题是显示所有类的所有方法。我有一个listview元素,它给我命名空间+类名。 E. g。 DLL.Class1 / DLL.Class2

如果我现在点击listview中的DLL.Class1,我希望他在另一个listview中向我展示这个类的方法(子/函数)。

这是我目前的代码:

  Private Sub CarbonFiberButton1_Click(sender As Object, e As EventArgs)
        CheckDll()
    End Sub
    Private Sub CheckDll()
        Try
            Dim loadedDll As Assembly = Assembly.LoadFile(txt_path.Text)

            Dim publicClasses = loadedDll.GetExportedTypes.Where(Function(p) p.IsClass And p.IsPublic)
            For Each classItem In publicClasses
                lv_classes.Items.Add(classItem.ToString)
            Next

        Catch e As Exception
            MessageBox.Show(e.Message)
            Debug.Print(e.Message)
    End Try
    End Sub

    Private Sub lv_classes_DoubleClick(sender As Object, e As EventArgs) Handles lv_classes.DoubleClick
        Dim currentClass As String = lv_classes.Items.Item(lv_classes.SelectedIndex).ToString
        MsgBox(lv_classes.Items.Item(lv_classes.SelectedIndex).ToString)
        lv_methods.Items.Clear()
        Try
            Dim loadedDll As Assembly = Assembly.LoadFile(txt_path.Text)

            Dim types As Type() = loadedDll.GetTypes()
            Dim arrl As ArrayList = New ArrayList()
            For Each cls As Type In types
                Dim methodName As MemberInfo() = cls.GetMethods()
                For Each method As MemberInfo In methodName
                    If method.ReflectedType.IsPublic Then arrl.Add(method.Name.ToString())
                Next
            Next
            For i As Integer = 0 To arrl.Count - 1
                lv_methods.Items.Add(arrl(i).ToString())
            Next
        Catch z As Exception
            MessageBox.Show(z.Message)
            Debug.Print(z.Message)
        End Try

    End Sub

如果有人给我一个提示,那将是非常好的。 我很高兴与装配工作!。

0 个答案:

没有答案
相关问题