数据库字段如下
F_vchManuText  F_vchClassName   F_vchClassDetail    F_vchClassPar
业务处理       getTest.dll      getTest.getTest     show:lgparam,mdiparent,1字段说明:F_vchManuText功能模块名; F_vchClassName所对应的DLL名;F_vchClassDetail命名空间及类;F_vchClassPar 方法名及对应参数getTest.dll 的接口方法如下:
public void show(NetDataCommon.LoginParam lgParam,System.Windows.Forms.Form mdiparent,int intType)
参数说明:NetDataCommon.LoginParam lgParam 是我用户登录信息类
          System.Windows.Forms.Form mdiparent 当前MDI窗体
          int intType  类别参数请教各位在程序里通过记录集,动态调用getTest.dll该怎么调用啊,请指点一二啊!!

解决方案 »

  1.   

    getTest.dll:是.net类库吗,如果是的话
    参看
    http://blog.csdn.net/knight94/archive/2006/04/10/657527.aspx
      

  2.   

    我的方法不知道错在那里,郁闷ing
    System.Reflection.Assembly ClassName;   //组件名称
    System.Type ClassType;                  //利用类型的命名空间和名称获得类型
    Object Obj;                             //实例化类型,或得对象
    System.Reflection.MethodInfo ClsMeth;   //类型中方法
    Object[] ClsParam=null;                 //参数
    string[] TempParam;                     //临时参数
    string MethName;                        //方法名称
    string DllFilePath;                     //DLL路经
    string strSql;                          //SQL语句
    int i;strSql="select F_nId,F_vchClassName,F_vchClassDetail,F_vchClassPar from YT_MENU where F_nId="+ModuleID;DataSet ds=new DataSet();
    ds=NetDataCommon.SqlHelper.ExecuteDataset(lgParam.StrDbconn,CommandType.Text,strSql);if(ds.Tables[0].Rows.Count>0)
    {
       DllFilePath=Application.StartupPath.ToString()+"\\"+ds.Tables[0].Rows[0][1].ToString();
       ClassName=Assembly.LoadFile(DllFilePath);
       ClassType=ClassName.GetType(ds.Tables[0].Rows[0][2].ToString(),false,true);    //加载组件模块
       Obj=System.Activator.CreateInstance(ClassType);
       MethName=ds.Tables[0].Rows[0][3].ToString().Substring(0,4);
       TempParam=ds.Tables[0].Rows[0][3].ToString().Substring(5,ds.Tables[0].Rows[0][3].ToString().Length-5).Split(',');
       ClsMeth=ClassType.GetMethod(MethName);   for(i=0;i<TempParam.Length;i++)
       {
          if(ClsParam==null)
          {
              ClsParam=new object[1];
           }
           else
           {
             ClsParam=new object[ClsParam.Length+1];
           }
           
           switch(TempParam[i].ToString().ToLower())
           {
               case "lgparam":
                    ClsParam[ClsParam.Length-1]=lgParam;
               case "mdiparent":
                    ClsParam[ClsParam.Length-1]=System.Windows.Forms.Form.ActiveForm.Name;
               default:
                    ClsParam[ClsParam.Length-1]=TempParam[i];
            }
         }
         ClsMeth.Invoke(Obj,ClsParam);
     }其中lgParam已经实例化好的了
      

  3.   

    问题已解决就是,ClsParam参数没有进行转换