- 首页 > 睿知 > it技术 > >
C#开发学习笔记|C#开发学习笔记:动态调用不同程序集中的方法
c#MethodInfoC#开发学习笔记
///
/// 执行数据库操作方法
///
/// 要执行的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;
}
推荐阅读