VS2005反射问题
一个解决方案中两个简单的项目,一个是windows应用程序,一个是dll。
在dll项目中包括两个类。在windows项目中利用反射调用dll项目中其中一个类的函数。代码如下:
1、windows项目中的代码:
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim PKG_Class As Object = Activator.CreateInstance(Type.GetType("PKGQCM.PKG_AQA0100C")) '
Dim Parameters() As Object = {"Para_str"}
Dim mtype As Type = PKG_Class.GetType()
Dim minfo As System.Reflection.MethodInfo = mtype.GetMethod("P_SMODIFY")
Dim Gf_Sp_Process As Boolean
Gf_Sp_Process = minfo.Invoke(PKG_Class, Parameters)
End Sub
End Class
2、dll项目中的代码如下(注:dll项目名称是PKGQCM):
Public Class PKG_AQA0100C
Public Function P_SMODIFY(ByVal Pro_str As String) As Boolean
Pro_str = "ITYPE," + Pro_str
Return True
End Function
End Class
调用时,提示错误:值不能为空。参数名:type
3、为验证调用的正确性,我在dll项目中增加一个类,代码如下:
Public Class CALL_PKG
Public Sub CA_PK()
Dim MTYPE As Type = Type.GetType("PKGQCM.xx.PKG_AQA0100C")
Dim PKG_Class As Object = Activator.CreateInstance(Type.GetType("PKGQCM.PKG_AQA0100C"))
End Sub
End Class
执行结果正确,请高手指点,多谢!