我想从外部程序集中列出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
如果有人给我一个提示,那将是非常好的。 我很高兴与装配工作!。