当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,