예제 #1
0
 public void Initialize(MachineInstance runner)
 {
     _machine = runner;
     _machine.StateConsistentOperation(() =>
     {
         _machine.SetModule(_module);
         _machine.AttachContext(this, true);
         _machine.ExecuteModuleBody();
     });
 }
예제 #2
0
        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("Конструктор не определен, но переданы параметры конструктора.");
                }
            }
        }
예제 #3
0
 protected virtual void OnInstanceCreation()
 {
     _machine.ExecuteModuleBody(this);
 }
예제 #4
0
 public void Initialize(MachineInstance runner)
 {
     _machine = runner;
     _machine.StateConsistentOperation(() =>
     {
         _machine.SetModule(_module);
         _machine.AttachContext(this, true);
         _machine.ExecuteModuleBody();
     });
 }