static void loadSysInstance() { if (string.IsNullOrEmpty(rootPath)) { return; } Assembly asse = null; IDataServerProvider dsp = null; Type dspType = null; string likeNameOfDll = @"DJ\.DotNetCore"; if (!isDotNetCore()) { likeNameOfDll = @"DJ\.Framework"; } codeCompiler = loadInterfaceInstance <IInstanceCodeCompiler>(likeNameOfDll, null, ref asse); if (null == codeCompiler) { return; } codeCompiler.SetRootPath(rootPath); Type[] types = asse.GetTypes(); Type t = typeof(IDataServerProvider); foreach (var item in types) { if (item.IsImplementInterface(t)) { try { dsp = (IDataServerProvider)Activator.CreateInstance(item); dspType = dsp.GetType(); } catch (Exception) { //throw; } break; } } Func <string, Type> action = filePath => { if (!File.Exists(filePath)) { return(null); } Type type2 = null; Assembly assembly1 = Assembly.LoadFrom(filePath); Type[] ts = null; try { ts = assembly1.GetTypes(); } catch { } if (null == ts) { return(type2); } string fName = typeof(IDataServerProvider).FullName; foreach (Type item in ts) { if (null != item.GetInterface(fName)) { type2 = item; break; } } return(type2); }; string f = ""; if (-1 != likeNameOfDll.ToLower().IndexOf("framework")) { f = Path.Combine(DJTools.RootPath, "System.DJ.DotNetCore.CodeCompiler.dll"); } else { f = Path.Combine(DJTools.RootPath, "System.DJ.Framework.CodeCompiler.dll"); } Type type1 = action(f); Type[] dsTypes = new Type[] { dspType, type1 }; Assembly asse1 = null; DbHelper = loadInterfaceInstance <IDbHelper>("DbHelper", new Type[] { typeof(DbHelper) }, ref asse1); if (null == DbHelper) { DbHelper = new DbHelper(); } Assembly asse2 = null; dataServerProvider = loadInterfaceInstance <IDataServerProvider>("DataServerProvider", dsTypes, ref asse2); if (null == dataServerProvider) { dataServerProvider = dsp; } DbHelper.dataServerProvider = dataServerProvider; Assembly asse3 = null; dbConnectionState = loadInterfaceInstance <IDbConnectionState>("ConnectionState", null, ref asse3); DbHelper.dbConnectionState = dbConnectionState; }
DataTable IDbHelper.query(object autoCall, string sql, List <DbParameter> parameters, bool EnabledBuffer, Action <DataTable> resultAction, ref string err) { DataTable dt = new DataTable(); string msg = ""; AutoCall autoCall_1 = autoCall as AutoCall; Action action = () => { basicExecForSQL.Exec(autoCall_1, sql, parameters, ref msg, result => { }, cmd => { IDataServerProvider dataServerProvider = ((IDbHelper)this).dataServerProvider; Data.Common.DataAdapter da = dataServerProvider.CreateDataAdapter(cmd); DataSet ds = new DataSet(); try { da.Fill(ds); if (0 < ds.Tables.Count) { dt = ds.Tables[0]; } } catch (Exception ex) { msg = ex.ToString(); //throw; } if (null != resultAction) { if (EnabledBuffer) { if (null != m_SyncContext) { m_SyncContext.Post(PostDataTable, new object[] { resultAction, dt }); } else { resultAction(dt); } } else { resultAction(dt); } } if (!string.IsNullOrEmpty(msg)) { throw new Exception(msg); } return(dt); }); }; if (EnabledBuffer) { Task task = new Task(() => { Thread.Sleep(50); action(); }); task.Start(); } else { action(); } err = msg; return(dt); }