private readonly ScriptInstruction[] m_scriptInstructions; //指令集 public ScriptContext(Script script, string breviary, ScriptFunctionData functionData, double[] constDouble, long[] constLong, string[] constString, ScriptContext[] constContexts, ScriptClassData[] constClasses) { m_script = script; m_global = script.Global; this.constDouble = constDouble; this.constLong = constLong; this.constString = constString; this.constContexts = constContexts; this.constClasses = constClasses; this.internalCount = functionData.internalCount; m_Breviary = breviary; m_FunctionData = functionData; m_scriptInstructions = functionData.scriptInstructions; }
private void LoadScriptModule(Type moduleType) { try { var moduleObj = _neonManager.Resolve(moduleType); foreach (var methodInfo in moduleType.GetMethods(BindingFlags.Public | BindingFlags.Instance)) { var scriptFunctionAttribute = methodInfo.GetCustomAttribute <ScriptFunctionAttribute>(); if (scriptFunctionAttribute != null) { _logger.LogInformation($"Module: {moduleType.Name} - {scriptFunctionAttribute.FunctionName} - {scriptFunctionAttribute.HelpText}"); var functionData = new ScriptFunctionData() { FunctionName = scriptFunctionAttribute.FunctionName, OutputType = methodInfo.ReturnType.Name, ScriptModuleName = moduleType.Name, HelpText = scriptFunctionAttribute.HelpText }; foreach (var parameter in methodInfo.GetParameters()) { functionData.Parameters.Add(new ScriptFunctionParamData() { ParamOrder = parameter.Position, ParamName = parameter.Name, ParamType = parameter.ParameterType.Name }); } RegisterFunction(scriptFunctionAttribute.FunctionName, moduleObj, methodInfo); Functions.Add(functionData); } } } catch (Exception ex) { _logger.LogError($"Error during load script module: {moduleType.Name} - {ex}"); } }