Пример #1
0
        public override object GetData(JsonParameter[] paramList)
        {
            string pythonCode    = "";
            string pythonFunc    = "Main";
            string pythonFuncArg = "";
            List <KeyValuePair <string, object> > pyParams = new List <KeyValuePair <string, object> >();

            foreach (var param in paramList)
            {
                switch (param.Key)
                {
                case "_py_code":
                    pythonCode = param.Value;
                    break;

                case "_py_func":
                    pythonFunc = param.Value;
                    break;

                case "_py_func_arg":
                    pythonFuncArg = param.Value;
                    break;

                default:
                    if (!string.IsNullOrEmpty(param.Key))
                    {
                        pyParams.Add(new KeyValuePair <string, object>(param.Key, param.Value));
                    }
                    break;
                }
            }

            var scope = ScriptEngines.ExecutePythonSource(pythonCode, new string[0]);

            foreach (var param in pyParams)
            {
                scope.SetVariable(param.Key, param.Value);
            }
            var func = scope.GetVariable <Func <string, object> >(pythonFunc);

            if (func != null)
            {
                return(func(""));
            }
            return(null);
            //return PythonUtils.CallFunc(pythonFunc, "", pyParams, pythonCode);
        }