Vb.net 从方法列表调用类内的方法

Vb.net 从方法列表调用类内的方法,vb.net,methods,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 现在,当我想用字符串名调用它时,我想获取类的实例化对象中的方法列表

好的,我确实有这样的课

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
现在,当我想用字符串名调用它时,我想获取类的实例化对象中的方法列表(如果它可以作为数组返回的话)

我想获取第二个方法(即方法B)的名称,并使用其名称调用它

 Dim methodObj As MethodInfo
 methodObj = Type.GetType("Common.Validation.Helper").GetMethod(ReturnAFunction(1))
 methodObj.Invoke(New Helper(), params))

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

给出的实例
h

Dim h as New Helper()
您可以使用:

或者简单地说:


请注意,由于您的方法是私有的,因此必须使用适当的。

给定实例
h

Dim h as New Helper()
您可以使用:

或者简单地说:


请注意,由于您的方法是私有的,因此必须使用适当的。

它返回一个错误
类型为“System.String”的对象无法转换为类型为“System.Char”。
使用您所说的第二种方式指向“h”变量,因为我使用的是私有的methods@Mahan我也不在代码中的任何地方使用
Char
,你问题中的代码也没有在任何地方使用
Char
。因此,显然,您尝试将
String
类型的参数传递给在实际代码中具有
Char
类型参数的方法。也许您正在寻找类似
.Invoke(h,{“X”c}的东西
?你知道
String
Char
之间的区别吗?@Mahan如果你有一个特定的问题,请做一个简短的例子来复制它,也许可以使用。好的,我让它工作了,但是如何从调用中获取函数的返回值呢?调用
.Invoke(…)
返回调用函数的返回值。请参见示例。它返回一个错误
类型为“System.String”的对象无法转换为类型为“System.Char”。
使用您所说的第二种方式指向“h”变量,因为我使用的是privatemethods@Mahan我既不在代码中的任何地方使用
Char
,也不使用代码在您的问题中,可以在任何地方使用
Char
。因此,显然您尝试将
String
类型的参数传递给在实际代码中具有
Char
类型参数的方法。可能您正在寻找类似
.Invoke(h,{“X”c}的内容
?你知道
String
Char
之间的区别吗?@Mahan如果你有一个特定的问题,请做一个简短的例子来复制它,也许可以使用。好的,我让它工作了,但是如何从调用中获取函数的返回值呢?调用
.Invoke(…)
返回所调用函数的返回值。参见示例。
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"})
h.GetType().GetMethod("B", BindingFlags.NonPublic Or BindingFlags.Instance).Invoke(h, {"the parameter"})