【发布时间】:2014-02-20 05:50:01
【问题描述】:
我只是出于好奇而测试反射的东西,我正在尝试调用一个私有方法,但我找不到它,因为它是 Private。
但我真正想知道的是,是否可以在反射搜索中自动检索方法的可见性,而不用担心要调用的方法是私有的、共享的、朋友的、公共的等等......所以有一个BindingFlags 标志组合可以无差别地调用方法可见性的方法?我的意思是不用担心方法的可见性。
这是我的代码:
Public Class Form1
Private Shadows Sub Load() Handles MyBase.Load
Dim Method As System.Reflection.MethodInfo = Me.GetType().GetMethod("Test")
If Method IsNot Nothing Then
Method.Invoke(Me, BindingFlags.InvokeMethod Or BindingFlags.NonPublic, Nothing,
New Object() {"Hello World!", Type.Missing}, CultureInfo.InvariantCulture)
Else
MsgBox("Method not found or maybe is not public.")
End If
End Sub
Private Sub Test(ByVal Value As String, Optional ByVal Value2 As Integer = 1)
MsgBox(Value)
End Sub
End Class
【问题讨论】:
标签: .net vb.net reflection methods invoke