C#开发学习笔记|C#开发学习笔记:动态调用不同程序集中的方法

/// /// 执行数据库操作方法 /// /// 要执行的Service名称 /// 【C#开发学习笔记|C#开发学习笔记:动态调用不同程序集中的方法】数据源 public static DataSet ExecuteService(String ServiceName, DataSet ds) { DataSet ReturnInfo = new DataSet(); try {//string sql = "SELECT * FROM TSM09 T WHERE T.SERVICE_NAME=:SERVICE_NAME"; //RCDbCommand comm = new RCDbCommand(DBConnection.conn); //comm.CommandText = sql; //comm.Parameter("SERVICE_NAME", ServiceName); //DataSet ReturnInfo = new DataSet(); //comm.ExecuteDataSet(ReturnInfo); //if(ReturnInfo.Tables[0].Rows.Count>0) //{ //根据ServiceName查询出来的信息(ServiceName所在的程序集,程序集中的类)获取当前Service方法 MethodInfo ServiceVoid = Assembly.LoadFrom("SMSql.DLL").GetType("SMSql.FormSM01Sql").GetMethod(ServiceName); //}//定义一个存储参数值的数组,长度等于要调用的方法的参数个数 object[] ParametersList = new object[ServiceVoid.GetParameters().Length]; //根据参数个数按照顺序给ParametersList添加元素 for (int i = 0; i < ServiceVoid.GetParameters().Length; i++) ParametersList[i]=ds.Tables[0]; //使用Invoke方法立即调用当前的方法同时传参数接收返回结果(如果调用的方法有返回结果且类型已知则转类型) //类型未知则用object接收 ReturnInfo = ServiceVoid.Invoke(null, ParametersList) as DataSet; } catch (Exception ex) { Tools.RCMesInfo.Flag = -1; Tools.RCMesInfo.ReturnMsg = ex.ToString(); return ReturnInfo; } return ReturnInfo; //Tools.RCMesInfo.Flag = 0; }


    推荐阅读