从方法列表中调用类中的方法

时间:2013-07-31 07:30:34

标签: vb.net methods

好的,我确实有这样的课程

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))
这可能吗?如果不是,我怎么能更接近我想要的东西?感谢

1 个答案:

答案 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