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("Конструктор не определен, но переданы параметры конструктора."); } } }