/// <summary>
        /// 根据指定的上下文执行hostjs
        /// </summary>
        /// <param name="js"></param>
        /// <param name="context"></param>
        /// <param name="outobjname"></param>
        /// <returns></returns>
        public object RunJs(string js, HostLogicContext context, string outobjname)
        {
            try
            {
                Dictionary <string, object> dic = new Dictionary <string, object>();
                foreach (var item in context.AllHostJsObject)
                {
                    dic.Add(item.Name, item);
                }

                context.CurrentJsEngine.Evaluate(js, dic.ToArray());
                var outobj = context.CurrentJsEngine.GetOutObject(outobjname);
                if (outobj == null)
                {
                    outobj = FrameDLRObject.CreateInstance();
                }
                if (outobj is Dictionary <string, object> )
                {
                    return(FrameDLRObject.CreateInstance(outobj, FrameDLRFlags.SensitiveCase));
                }
                else
                {
                    return(outobj);
                }
            }
            finally
            {
                context.CurrentJsEngine.Release();
            }
        }
 public HostLogicEngine(WebBaseLogic <WebParameter, GoData> logic)
 {
     _context                = new HostLogicContext();
     _context.RootPath       = GlobalCommon.HostCommon.RootPath;
     _context.RunTimeLibPath = GlobalCommon.HostCommon.RootPath + "/" + HostJsConstants.COMPILED_ROOT_PATH;
     _context.CommonLibPath  = GlobalCommon.HostCommon.RootPath;
     _logic = logic;
     InitContext(_context, logic);
 }
        /// <summary>
        /// 运行格式化js,将js封装成function运行,可以使用return语句,用于HostLogic使用
        /// </summary>
        /// <param name="js"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public object DebugRunFormatJs(string js, HostLogicContext context)
        {
            var formatjs = @"function ___r___(){
    " + js + @"
}; 
var _____out______ = ___r___();";

            return(DebugRunJs(formatjs, context, "_____out______"));
        }
 public static void InitContext(HostLogicContext context, WebBaseLogic <WebParameter, GoData> logic)
 {
     context.AddHostJsObject(new JsDocument(context.CurrentJsEngine, context.RootPath, context.CommonLibPath, context.RunTimeLibPath));
     context.AddHostJsObject(new ConsoleObject());
     context.AddHostJsObject(new ServerObject(logic));
     context.AddHostJsObject(new ClientObject(logic));
     context.AddHostJsObject(new SessionObject(logic));
     context.AddHostJsObject(new LoginInfoObject(logic));
     context.AddHostJsObject(new CookieObject(logic));
     context.AddHostJsObject(new ConfigObject(logic));
     context.AddHostJsObject(new DBObject(logic));
     context.AddHostJsObject(new InputObject(logic));
     context.AddHostJsObject(new LogicObject(logic));
     context.AddHostJsObject(new ComFuncObject());
     context.AddHostJsObject(new FrameCacheObject(logic));
     context.AddHostJsObject(new LockObject(logic));
 }
 public HostLogicEngine(HostLogicContext context, WebBaseLogic <WebParameter, GoData> logic)
 {
     _context = context;
     _logic   = logic;
     InitContext(_context, logic);
 }
 /// <summary>
 /// debug方式运行js,默认返回参数名称为out
 /// </summary>
 /// <param name="js"></param>
 /// <param name="context"></param>
 /// <returns></returns>
 public object DebugRunJs(string js, HostLogicContext context)
 {
     return(DebugRunJs(js, context, "out"));
 }