public void Run(ExecFunc exec) { foreach (var func in Functions) { List <Param> refParams = new List <Param>(); foreach (var refParam in func.ParamRefs) { var paramVal = ScriptContext.GetRaw(refParam.Key); refParams.Add(new Param { Name = refParam.Target, Value = paramVal }); } func.Context.AddParams(refParams.ToArray()); exec(func.Name, func.Context); if (func.OutputKey == "$out") { OutputContext.AddParams(func.Context.GetResults()); } if (func.OutputKey != null) { ScriptContext.AddParams(func.Context.GetResults(func.OutputKey + ".")); } } }