示例#1
0
        protected override void OnInstanceCreation()
        {
            ActivateAsStringOverride();

            base.OnInstanceCreation();
            var methId = GetScriptMethod("ПриСозданииОбъекта", "OnObjectCreate");
            int constructorParamsCount = ConstructorParams.Count();

            if (methId > -1)
            {
                var procInfo = GetMethodInfo(methId);

                int procParamsCount = procInfo.Params.Count();

                int reqParamsCount = procInfo.Params.Count(x => !x.HasDefaultValue);

                if (constructorParamsCount < reqParamsCount || constructorParamsCount > procParamsCount)
                {
                    throw new RuntimeException("Параметры конструктора: "
                                               + "необходимых параметров: " + Math.Min(procParamsCount, reqParamsCount).ToString()
                                               + ", передано параметров " + constructorParamsCount.ToString()
                                               );
                }
                else if (procInfo.Params.Skip(constructorParamsCount).Any(param => !param.HasDefaultValue))
                {
                    throw RuntimeException.TooFewArgumentsPassed();
                }

                CallAsProcedure(methId, ConstructorParams);
            }
            else
            {
                if (constructorParamsCount > 0)
                {
                    throw new RuntimeException("Конструктор не определен, но переданы параметры конструктора.");
                }
            }
        }