VB2005类库和反射参数传递问题
主程序 MainShow.exe类库文件 AppLogin.dll (登陆模块)
类库文件 SC.dll (生产管理模块)
系统是这样设计的,在AppLogin中选择了帐套,这样就生成一个帐套的数据库连接字符串ConnStr
在MainShow.exe 用以下代码调用登陆并获取ConnStr
Dim TheAppExt As New AppLogin.CAppLogin
ConnStr = TheAppExt.GetConnStr '复制远程连接字符串
但在MainShow.exe要调用SC.dll里的功能
我用了两种方法:
1. 直接调用
dim NewFrm as sc.form1
newfrm.参数=传递参数
newfrm.show()
但是这个参数一般不会是ConnStr 因为这个ConnStr一般都是在SC 的模块里设定Public,而不是这个窗体的Public
问题。不知道如何调用某一个窗体的时候就已经传递了ConnStr给SC这个模块了。
2. 通过反射调用
在MainShow里设定一个Function如下:
Public Function CreateFormInstance(ByVal FormName As String)
Dim asm As Assembly = Assembly.Load("SC")
objForm = asm.CreateInstance("SC." + FormName)
objForm.Show()
End If
End Function
但是这个方法 ,连 objForm.参数 都不知道如何传递进去。
希望各位大侠不惜赐教,非常感谢
--------------------编程问答-------------------- 1 如果是全局模块,你直接赋值不就可以了么,不用new什么呀
sc.模块.变量=ConnStr
dim NewFrm as sc.form1
newfrm.参数=传递参数
newfrm.show()
2
objForm = ctype(asm.CreateInstance("SC." + FormName),form1)
newfrm.参数=传递参数
--------------------编程问答-------------------- 1。 如果不NEW sc.模块.变量 不知道为何不能使用,
一旦NEW了,form1就读取不到SC里的全局变量ConnStr了
2。 在系统里,我用 ("SC." + FormName), 来打开一个我需要的窗体,所以FormName是一个变量,我可能是存储在数据库里,用来生成动态菜单啊啥的,所以并不能强制转换 ctype(asm.CreateInstance("SC." + FormName),form1) 成form1 这个窗体。
我的意思只是,是否能动态的生成参数,就是说就像反射Form一样的反射参数,这样我就能在菜单配置里就能直接配置窗体名 和参数名称和值
补充:.NET技术 , VB.NET