好的我确实有这样的课。
Namespace mySpace
Public Class ClassA
Private Function MethodA(prm AS Boolean) As Boolean
Return False
End Function
Private Function MethodB() As Boolean
Return False
End Function
End Class
Public Class ClassB
Private Function MethodC() As Boolean
Return True
End Function
Private Function InvokeA() As Boolean
Dim methodObj As MethodInfo
'null pointer except below here
methodObj = Type.GetType("mySpace.ClassA").GetMethod("MethodA")
Dim params As Boolean() = {False}
Return CBool(methodObj.Invoke(New ClassA(), params))
End Function
End Class
End Namespace
我在这里尝试的是使用其方法从具有参数的不同类调用方法。但是这会返回一个空指针异常。为什么?哪里出错了?
答案 0 :(得分:1)
你做错了。以下代码应该没有任何问题:
Dim objA As ClassA = New ClassA()
methodObj = objA.GetType().GetMethod("MethodA", BindingFlags.Instance Or BindingFlags.NonPublic)
Dim params As Object() = {False}
methodObj.Invoke(objA, params)
您有各种错误,根本不允许您的代码运行,即:
BindingFlags
。Object
类型。此外,您没有将GetMethod
与ClassA
的实例化对象(例如,上面的objA
)和instance.GetType()
一起使用;我不是100%确定你需要这样做(也许你可以按照你的意愿完成它),但执行这一步是一个非常快速的过程,并允许上面的代码没有任何问题。