int RunCsScript( object sender, GenerateDataEventArgs e, string strCode, string strRef, out string strError) { strError = ""; string[] saRef = null; int nRet; // string strWarning = ""; nRet = ScriptManager.GetRefsFromXml(strRef, out saRef, out strError); if (nRet == -1) return -1; // 2007/12/4 ScriptManager.RemoveRefsBinDirMacro(ref saRef); string[] saAddRef = { // 2011/3/4 增加 "system.dll", "system.xml.dll", "system.windows.forms.dll", "system.drawing.dll", "System.Runtime.Serialization.dll", Environment.CurrentDirectory + "\\digitalplatform.dll", Environment.CurrentDirectory + "\\digitalplatform.IO.dll", Environment.CurrentDirectory + "\\digitalplatform.Text.dll", Environment.CurrentDirectory + "\\digitalplatform.Xml.dll", //Environment.CurrentDirectory + "\\digitalplatform.xmleditor.dll", //Environment.CurrentDirectory + "\\digitalplatform.rms.dll", //Environment.CurrentDirectory + "\\digitalplatform.rms.client.dll", Environment.CurrentDirectory + "\\digitalplatform.marceditor.dll", Environment.CurrentDirectory + "\\digitalplatform.marcfixedfieldcontrol.dll", Environment.CurrentDirectory + "\\digitalplatform.marckernel.dll", Environment.CurrentDirectory + "\\digitalplatform.marcquery.dll", Environment.CurrentDirectory + "\\digitalplatform.gcatclient.dll", Environment.CurrentDirectory + "\\digitalplatform.script.dll", Environment.CurrentDirectory + "\\digitalplatform.commoncontrol.dll", Environment.CurrentDirectory + "\\digitalplatform.circulationclient.dll", Environment.CurrentDirectory + "\\digitalplatform.libraryclient.dll", //Environment.CurrentDirectory + "\\digitalplatform.library.dll", // Environment.CurrentDirectory + "\\Interop.SHDocVw.dll", Environment.CurrentDirectory + "\\dp2circulation.exe" }; if (saAddRef != null) { string[] saTemp = new string[saRef.Length + saAddRef.Length]; Array.Copy(saRef, 0, saTemp, 0, saRef.Length); Array.Copy(saAddRef, 0, saTemp, saRef.Length, saAddRef.Length); saRef = saTemp; } Assembly assembly = null; string strErrorInfo = ""; string strWarningInfo = ""; nRet = ScriptManager.CreateAssembly_1(strCode, saRef, null, // strLibPaths, out assembly, out strErrorInfo, out strWarningInfo); if (nRet == -1) { strError = "脚本编译发现错误或警告:\r\n" + strErrorInfo; return -1; } // 得到Assembly中Host派生类Type Type entryClassType = ScriptManager.GetDerivedClassType( assembly, "dp2Circulation.Host"); if (entryClassType == null) { entryClassType = ScriptManager.GetDerivedClassType( assembly, "dp2Circulation.DetailHost"); if (entryClassType == null) { strError = "dp2Circulation.Host的派生类和dp2Circulation.DetailHost的派生类都没有找到"; return -1; } // new一个DetailHost派生对象 DetailHost hostObj = (DetailHost)entryClassType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); if (hostObj == null) { strError = "new DetailHost的派生类对象时失败"; return -1; } using (hostObj) { // 为DetailHost派生类设置参数 hostObj.DetailForm = this; hostObj.Assembly = assembly; // hostObj.Main(sender, e); // 2009/2/27 hostObj.Invoke(String.IsNullOrEmpty(e.ScriptEntry) == true ? "Main" : e.ScriptEntry, sender, e); } return 0; } else { // 为了兼容,保留以往的调用方式 // new一个Host派生对象 Host hostObj = (Host)entryClassType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); if (hostObj == null) { strError = "new Host派生类对象失败"; return -1; } { // 为Host派生类设置参数 hostObj.DetailForm = this; hostObj.Assembly = assembly; HostEventArgs e1 = new HostEventArgs(); e1.e = e; // 2009/2/24 /* nRet = this.Flush(out strError); if (nRet == -1) return -1; * */ hostObj.Main(sender, e1); /* nRet = this.Flush(out strError); if (nRet == -1) return -1; * */ } } return 0; }
/// <summary> /// 入口函数 /// </summary> /// <param name="sender">事件触发者</param> /// <param name="e">事件参数</param> public virtual void Main(object sender, HostEventArgs e) { }
int RunVerifyCsScript( object sender, GenerateDataEventArgs e, string strCode, string strRef, out VerifyHost hostObj, out string strError) { strError = ""; string[] saRef = null; int nRet; hostObj = null; nRet = ScriptManager.GetRefsFromXml(strRef, out saRef, out strError); if (nRet == -1) return -1; // 2007/12/4 ScriptManager.RemoveRefsBinDirMacro(ref saRef); string[] saAddRef = { "system.dll", "system.xml.dll", "system.windows.forms.dll", "system.drawing.dll", "System.Runtime.Serialization.dll", Environment.CurrentDirectory + "\\digitalplatform.dll", Environment.CurrentDirectory + "\\digitalplatform.IO.dll", Environment.CurrentDirectory + "\\digitalplatform.Text.dll", Environment.CurrentDirectory + "\\digitalplatform.Xml.dll", Environment.CurrentDirectory + "\\digitalplatform.marceditor.dll", Environment.CurrentDirectory + "\\digitalplatform.marcfixedfieldcontrol.dll", Environment.CurrentDirectory + "\\digitalplatform.marckernel.dll", Environment.CurrentDirectory + "\\digitalplatform.marcquery.dll", Environment.CurrentDirectory + "\\digitalplatform.gcatclient.dll", Environment.CurrentDirectory + "\\digitalplatform.script.dll", Environment.CurrentDirectory + "\\digitalplatform.commoncontrol.dll", Environment.CurrentDirectory + "\\digitalplatform.circulationclient.dll", Environment.CurrentDirectory + "\\digitalplatform.libraryclient.dll", Environment.CurrentDirectory + "\\dp2circulation.exe" }; if (saAddRef != null) { string[] saTemp = new string[saRef.Length + saAddRef.Length]; Array.Copy(saRef, 0, saTemp, 0, saRef.Length); Array.Copy(saAddRef, 0, saTemp, saRef.Length, saAddRef.Length); saRef = saTemp; } Assembly assembly = null; string strErrorInfo = ""; string strWarningInfo = ""; nRet = ScriptManager.CreateAssembly_1(strCode, saRef, null, // strLibPaths, out assembly, out strErrorInfo, out strWarningInfo); if (nRet == -1) { strError = "脚本编译发现错误或警告:\r\n" + strErrorInfo; return -1; } // 得到Assembly中VerifyHost派生类Type Type entryClassType = ScriptManager.GetDerivedClassType( assembly, "dp2Circulation.VerifyHost"); if (entryClassType == null) { strError = "dp2Circulation.VerifyHost派生类没有找到"; return -1; } { // new一个VerifyHost派生对象 hostObj = (VerifyHost)entryClassType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); if (hostObj == null) { strError = "new VerifyHost派生类对象失败"; return -1; } // 为Host派生类设置参数 hostObj.DetailForm = this; hostObj.Assembly = assembly; HostEventArgs e1 = new HostEventArgs(); e1.e = e; // 2009/2/24 hostObj.Main(sender, e1); } return 0; }