/// <summary> /// 执行脚本文件 /// </summary> /// <param name="file">文件名</param> /// <param name="fun">函数名</param> /// <param name="param1">参数1</param> /// <param name="param2">参数2</param> /// <param name="param3">参数3</param> /// <returns>返回执行结果</returns> public object RunFile(string file, object fun, object param1 = null, object param2 = null, object param3 = null) { if (string.IsNullOrEmpty(file)) { Ex = "脚本文件名不能为空"; return(null); } file = file.ToFullName(_Dir); if (!File.Exists(file)) { Ex = "脚本不存在!请确认脚本:“" + file + "”是否存在。"; return(null); } try { Lua Eng = new Lua(); Eng.LoadCLRPackage(); var dir = file.ToDir(); Eng["SDK"] = new Helper.Indexer() { Dir = dir }; Eng["Cache"] = new Cache(); Eng["Engine"] = new Indexer() { Dir = dir }; Eng.DoFile(file); var funObj = Eng.GetFunction("Main"); if (param1 == null) { return(funObj.Call(fun)[0]); } else if (param2 == null) { return(funObj.Call(fun, param1)[0]); } else if (param3 == null) { return(funObj.Call(fun, param1, param2)[0]); } else { return(funObj.Call(fun, param1, param2, param3)[0]); } } catch (Exception ex) { Ex = ex.ToString(); } return(null); }
/// <summary> /// 执行脚本代码 /// </summary> /// <param name="code">代码</param> /// <param name="fun">函数名</param> /// <param name="param1">参数1</param> /// <param name="param2">参数2</param> /// <param name="param3">参数3</param> /// <returns>返回执行结果</returns> public object RunCode(string code, object fun, object param1 = null, object param2 = null, object param3 = null) { if (string.IsNullOrEmpty(code)) { Ex = "脚本不能为空"; return(null); } try { Lua Eng = new Lua(); Eng.LoadCLRPackage(); var dir = _Dir; Eng["SDK"] = new Helper.Indexer() { Dir = dir }; Eng["Cache"] = new Cache(); Eng["Engine"] = new Indexer() { Dir = dir }; Eng.DoString(code, "Script"); var funObj = Eng.GetFunction("Main"); if (param1 == null) { return(funObj.Call(fun)[0]); } else if (param2 == null) { return(funObj.Call(fun, param1)[0]); } else if (param3 == null) { return(funObj.Call(fun, param1, param2)[0]); } else { return(funObj.Call(fun, param1, param2, param3)[0]); } } catch (Exception ex) { Ex = ex.ToString(); } return(null); }
/// <summary> /// 获取函数 /// </summary> /// <param name="file">文件名</param> /// <returns>返回函数</returns> public dynamic GetClass(string file) { if (string.IsNullOrEmpty(file)) { Ex = "脚本文件名不能为空"; return(null); } file = file.ToFullName(_Dir); if (!File.Exists(file)) { Ex = "脚本不存在!请确认脚本:“" + file + "”是否存在。"; return(null); } try { Lua Eng = new Lua(); Eng.LoadCLRPackage(); var dir = file.ToDir(); Eng["SDK"] = new Helper.Indexer() { Dir = dir }; Eng["Cache"] = new Cache(); Eng["Engine"] = new Indexer() { Dir = dir }; var code = File.ReadAllText(file, Encoding.UTF8); Eng.DoFile(file); return(Eng.Pop()); } catch (Exception ex) { Ex = ex.ToString(); } return(null); }