public static object CallScript(string code, object host, string function = null, params object[] arguments) { object script = SimpleScriptSite.HostScript(code, host); if (function == null) { return(script); } return(script.GetType().InvokeMember(function, BindingFlags.InvokeMethod, null, script, arguments)); }
protected object ActivateScript(string scriptFile, bool startup = false) { if (!startup) { SimpleScriptSite obj = ScriptAdapter.CreateScriptObject <SimpleScriptSite>(scriptFile); obj.Host = this; return(obj); } Active = ScriptAdapter.CreateScriptObject <SimpleScriptHost>(scriptFile); Active.Host = this; string[] extAsms = Directory.GetFiles(".", "*.dll"); foreach (string extAsm in extAsms) { string cmdName = Path.GetFileNameWithoutExtension(extAsm); try { Assembly asm = Assembly.LoadFrom(extAsm); Type t = asm.GetType("Scripting.HostExtension"); if (t == null) { continue; } MemberInfo[] info = t.GetMember("Invoke", BindingFlags.Public | BindingFlags.Static); if (info != null && info.Length > 0) { FieldInfo hostField = t.GetField("Invoker", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); if (hostField != null) { hostField.SetValue(null, Active); } extCache.Add(cmdName, info); } } catch {} } return(Active); }