public ILBFactory CreateLBFactory() { ILBFactory factory = null; try { factory = new LBFactory(); } catch (Exception exception) { this.Log.Error( exception.Message, exception); } return(factory); }
public DataSet RunProcedure(int ProcedureType, string strLoginName, DataTable dtParmValue, out DataTable dtOut, out string ErrorMsg, out bool bolIsError) { dtOut = null; bolIsError = false; DataSet dsReturn = null; ErrorMsg = ""; try { LBFactory factory = new LBFactory(); IBLLFunction function = factory.GetAssemblyFunction(ProcedureType); if (function == null) { #region -- 调用存储过程 -- DataTable dtView = SQLServerDAL.Query("select * from dbo.SysSPType where SysSPType=" + ProcedureType); if (dtView.Rows.Count > 0) { DataRow drView = dtView.Rows[0]; string strSysSPName = drView["SysSPName"].ToString().TrimEnd(); SQLServerDAL.ExecuteProcedure(strSysSPName, dtParmValue, out dtOut, out dsReturn); } else { throw new Exception("存储过程号【" + ProcedureType + "】不存在!"); } #endregion } else { #region -- 调用中间层程序方法 -- string strMethod = function.GetFunctionName(ProcedureType); string str = function.ToString(); Assembly s = Assembly.Load("LB.Web.Project"); Type tpe = s.GetType(str); //调用GetName方法 MethodInfo method = tpe.GetMethod(strMethod); int iRowIndex = 0; foreach (DataRow drParmValue in dtParmValue.Rows) { //获取需要传入的参数 ParameterInfo[] parms = method.GetParameters(); FactoryArgs factoryArgs = new FactoryArgs(strLoginName); Dictionary <int, string> dictOutFieldName = new Dictionary <int, string>(); object[] objValue = new object[parms.Length]; int iParmIndex = 0; foreach (ParameterInfo ss in parms) { string strParmName = ss.Name; if (ss.ParameterType == typeof(FactoryArgs)) { objValue[iParmIndex] = factoryArgs; } else if (ss.Attributes != ParameterAttributes.Out) { if (dtParmValue.Columns.Contains(strParmName)) { objValue[iParmIndex] = drParmValue[strParmName]; } } else { if (dtOut == null) { dtOut = new DataTable("Out"); } if (!dtOut.Columns.Contains(strParmName)) { dtOut.Columns.Add(strParmName, typeof(object)); } dictOutFieldName.Add(iParmIndex, strParmName); } iParmIndex++; } if (dtOut != null) { dtOut.Rows.Add(dtOut.NewRow()); } //获取Car对象 object obj = s.CreateInstance(str); //如果有返回值接收下 method.Invoke(obj, objValue); int iobjReturnIndex = 0; foreach (object objReturn in objValue) { if (objReturn is FactoryArgs) { FactoryArgs args = (FactoryArgs)objReturn; if (args.SelectResult != null) { if (dsReturn == null) { dsReturn = new DataSet("DSResult"); } args.SelectResult.TableName = "Return" + iRowIndex.ToString(); dsReturn.Tables.Add(args.SelectResult.Copy()); } } if (dictOutFieldName.ContainsKey(iobjReturnIndex)) { dtOut.Rows[0][dictOutFieldName[iobjReturnIndex]] = objReturn; } iobjReturnIndex++; } iRowIndex++; } #endregion -- 调用中间层程序方法 -- } } catch (Exception ex) { ErrorMsg = ex.InnerException.Message; bolIsError = true; } return(dsReturn); }
public void User_Insert(string strAccount, string strPassword, string strName) { /*StringBuilder sb = new StringBuilder(); * sb.Append("INSERT INTO DBUser(UserAccount,UserPassword,UserName) "); * sb.Append("VALUES(?UserAccount,?UserPassword,?UserName) "); * MySqlParameter[] parameters = { * new MySqlParameter("?UserAccount", MySqlDbType.String), * new MySqlParameter("?UserPassword", MySqlDbType.String), * new MySqlParameter("?UserName", MySqlDbType.String) * }; * parameters[0].Value = strAccount; * parameters[1].Value = strPassword; * parameters[2].Value = strName; * DBConn.ExecuteNonQuery(sb.ToString(), CommandType.Text, parameters);*/ /*DataTable dtSP = new DataTable(); * dtSP.Columns.Add("UserID",typeof(long)); * dtSP.Columns.Add("UserAccount",typeof(string)); * dtSP.Columns.Add("UserPassword",typeof(string)); * dtSP.Columns.Add("UserName",typeof(string)); * * DataRow drNew = dtSP.NewRow(); * drNew["UserAccount"] = "林汝斌"; * drNew["UserPassword"] = "******"; * drNew["UserName"] = "******"; * dtSP.Rows.Add(drNew); * drNew = dtSP.NewRow(); * drNew["UserAccount"] = "林汝斌1"; * drNew["UserPassword"] = "******"; * drNew["UserName"] = "******"; * dtSP.Rows.Add(drNew); * * DataTable dtOut; * DataSet dsReturn; * SQLServerDAL.ExecuteProcedure("DBUser_Insert111", dtSP, out dtOut, out dsReturn); * //IDataParameter[] parameters = new * throw new Exception("eeee");*/ LBFactory factory = new LBFactory(); IBLLFunction function = factory.GetAssemblyFunction(10000); string strMethod = function.GetFunctionName(10000); string str = function.ToString(); Assembly s = Assembly.Load("LB.Web.Project"); Type tpe = s.GetType(str); //调用GetName方法 MethodInfo method = tpe.GetMethod(strMethod); //获取需要传入的参数 ParameterInfo[] parms = method.GetParameters(); //这里是判断参数类型 foreach (ParameterInfo ss in parms) { if (ss.ParameterType == typeof(string)) { Console.WriteLine("Yes"); } } //获取Car对象 object obj = s.CreateInstance("RecleTest.Car"); //如果有返回值接收下 method.Invoke(obj, new object[] { "小小" }); }