0

好的,我确实有这样的课

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))

这可能吗?如果不是,我怎样才能更接近我想要的东西?谢谢

4

1 回答 1

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.

于 2013-07-31T07:54:00.280 回答