コード例 #1
0
        public override ScriptResult ExecuteFile(
            string path,
            IDependencyContainer container,
            ref IScriptContext context,
            ScriptPluginMeta meta,
            bool createPluginInstanceOnNull = false,
            string entryPoint = null,
            params object[] arguments
            )
        {
            if (context == null)
            {
                context = CreateScriptContext(container.CreateChildContainer());

                if (createPluginInstanceOnNull)
                {
                    var plugin = (JavaScriptPlugin)GetPlugin(meta.Name);
                    if (plugin == null)
                    {
                        plugin = new JavaScriptPlugin(meta, context.Container, this, (JavaScriptContext)context);
                        AddPlugin(plugin);
                    }

                    ((JavaScriptContext)context).Plugin = plugin;
                    context.SetGlobalVariables();

                    ExecuteFromFileWithImports(((JavaScriptContext)context).ScriptEngine, path);
                    plugin.Load(false);
                    return(new ScriptResult(ScriptExecutionResult.Success));
                }
            }

            context.SetGlobalVariables();
            var engine = ((JavaScriptContext)context).ScriptEngine;

            if (engine == null)
            {
                return(new ScriptResult(ScriptExecutionResult.FailedMisc));
            }

            ExecuteFromFileWithImports(engine, path);

            if (entryPoint != null)
            {
                engine.Invoke(entryPoint, arguments);
            }

            var ret = engine.GetCompletionValue();

            return(new ScriptResult(ScriptExecutionResult.Success)
            {
                HasReturn = ret.Type != Types.None,
                Return = ret == JsValue.Null ? null : ret
            });
        }
コード例 #2
0
        public override ScriptResult ExecuteFile(
            string path,
            IDependencyContainer container,
            ref IScriptContext context,
            ScriptPluginMeta meta,
            bool createPluginInstanceOnNull = false,
            string entryPoint = null,
            params object[] arguments
            )
        {
            if (context == null)
            {
                context = CreateScriptContext(container.CreateChildContainer());

                if (createPluginInstanceOnNull)
                {
                    var plugin = (CSharpPlugin)GetPlugin(meta.Name);
                    if (plugin == null)
                    {
                        plugin = new CSharpPlugin(meta, context.Container, this, (CSharpScriptContext)context);
                        _plugins.Add(plugin);
                    }

                    ((CSharpScriptContext)context).Plugin = plugin;
                    context.SetGlobalVariables();

                    plugin.Load(false);
                    return(new ScriptResult(ScriptExecutionResult.Success));
                }
            }

            context.SetGlobalVariables();

            var engine = ((CSharpScriptContext)context).Evaluator;

            if (engine == null)
            {
                return(new ScriptResult(ScriptExecutionResult.FailedMisc));
            }

            engine.LoadFile(path);

            /*
             * var ret = engine.CallGlobalFunction(entryPoint, context);
             * var res = new ScriptResult(ScriptExecutionResult.Success)
             * {
             *  HasReturn = ret is Undefined,
             *  Return = ret is Null ? null : ret
             * };
             * return res;
             */

            return(new ScriptResult(ScriptExecutionResult.Success));
        }
コード例 #3
0
 public CSharpPlugin(ScriptPluginMeta pluginMeta, IDependencyContainer container, ScriptingProvider provider, CSharpScriptContext context) : base(pluginMeta, container, provider, context)
 {
 }