The BindingFlags
values Public
and NonPublic
are not mutually exclusive. Each one just means members with that access level are to be included in the search. If you want to include both public and non-public members in the search then you simply include both BindingFlags
values.
BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic
Here's a quick example that I just tested and found to work:
Imports System.Reflection
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim obj As New Test
Dim objType = obj.GetType()
Dim method1 = objType.GetMethod("Method1", BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)
Dim method2 = objType.GetMethod("Method2", BindingFlags.Instance Or BindingFlags.Public Or BindingFlags.NonPublic)
method1.Invoke(obj, Nothing)
method2.Invoke(obj, Nothing)
End Sub
End Class
Public Class Test
Public Sub Method1()
MessageBox.Show("Public")
End Sub
Private Sub Method2()
MessageBox.Show("Private")
End Sub
End Class