public void Initialize(MachineInstance runner) { _machine = runner; _machine.StateConsistentOperation(() => { _machine.SetModule(_module); _machine.AttachContext(this, true); _machine.ExecuteModuleBody(); }); }
public void Initialize(MachineInstance runner) { _machine = runner; _machine.StateConsistentOperation(() => { _machine.SetModule(_module); _machine.AttachContext(this, true); _machine.ExecuteModuleBody(); }); var methId = GetScriptMethod("ПриСозданииОбъекта", "OnObjectCreate"); int constructorParamsCount = ConstructorParams.Count(); if (methId > -1) { bool hasParamsError = false; var procInfo = GetMethodInfo(methId); int procParamsCount = procInfo.Params.Count(); if (procParamsCount < constructorParamsCount) { hasParamsError = true; } int reqParams = 0; foreach (var itm in procInfo.Params) { if (!itm.HasDefaultValue) { reqParams++; } } if (reqParams > constructorParamsCount) { hasParamsError = true; } if (hasParamsError) { throw new RuntimeException("Параметры конструктора: " + "необходимых параметров: " + Math.Min(procParamsCount, reqParams).ToString() + ", передано параметров " + constructorParamsCount.ToString() ); } CallAsProcedure(methId, ConstructorParams); } else { if (constructorParamsCount > 0) { throw new RuntimeException("Конструктор не определен, но переданы параметры конструктора."); } } }
protected virtual void OnInstanceCreation() { _machine.ExecuteModuleBody(this); }