好的,我确实有这样的课程
Public NotInheritable Class Helper
Private Function A(a As String) as Boolean
Return True
End Function
Private Function B(a As String) as Boolean
Return True
End Function
End Class
现在因为我想通过字符串名称来调用它,我想获取类的实例化对象里面的方法列表(如果它可以作为一个很好的数组返回)
Dim h as New Helper()
'So it will list something like this
'[0] - A
'[1] - B
我想获取第二种方法的名称(方法 B )并使用其名称调用
Dim methodObj As MethodInfo
methodObj = Type.GetType("Common.Validation.Helper").GetMethod(ReturnAFunction(1))
methodObj.Invoke(New Helper(), params))
这可能吗?如果不是,我怎么能更接近我想要的东西?感谢
答案 0 :(得分:4)
给定实例h
:
Dim h as New Helper()
您可以使用GetMethods()
:
Dim yourPrivateMethods = h.GetType() _
.GetMethods(BindingFlags.NonPublic Or BindingFlags.Instance) _
.Where(Function(m) Not m.IsHideBySig) _
.ToArray() '' array contains A and B
'' get the method named 'B' and call it
yourPrivateMethods.Single(Function(m) m.Name = "B").Invoke(h, {"the parameter"})
或只是GetMethod(name)
:
h.GetType().GetMethod("B", BindingFlags.NonPublic Or BindingFlags.Instance).Invoke(h, {"the parameter"})
请注意,由于您的方法是私有的,因此您必须使用相应的BindingFlags
。