public override void FromSimpleValue(object value, FunctionalLanguageDef ldef) { object[] obj = (object[])value; base.FromSimpleValue(obj[3], ldef); fParamName = (string)obj[0]; fAdv = (string)obj[1]; fMultiply = (bool)obj[2]; }
/// <summary> /// псевдосериализация FunctionalLanguageDef в object[] /// </summary> /// <param name="fld"></param> /// <returns></returns> public object ToSimpleValue(FunctionalLanguageDef fld) { object[] Pars = new object[Parameters.Length]; for (int i = 0; i < Pars.Length; i++) { Pars[i] = Parameters[i].ToSimpleValue(); } return(new object[] { Name, Pars, fld.FunctionToSimpleStruct(Function), FormCustomizeString, paramValues }); }
/// <summary> /// псевдодесериализация object[] в FunctionalLanguageDef /// В конце выполняется синхронизация параметров функции с параметрами текущего объекта (параметрам функции присвоятся параметры текущего объекта при совпадении имён) /// </summary> /// <param name="Value"></param> /// <param name="fld"></param> public void FromSimpleValue(object Value, FunctionalLanguageDef fld) { object[] obj = (object[])Value; Name = (string)obj[0]; object[] Pars = (object[])obj[1]; Parameters = new ParameterDef[Pars.Length]; for (int i = 0; i < Pars.Length; i++) { Parameters[i] = new ParameterDef(); Parameters[i].FromSimpleValue(Pars[i], fld); } Function = fld.FunctionFromSimpleStruct(obj[2]); FormCustomizeString = (string)obj[3]; paramValues = (SortedList)obj[4]; SyncParams(Function); }
/// <summary> /// Извлекаем описание ограничения на детейл из особой сериализованной структуры. /// </summary> /// <param name="value">Фрагмент сериализованной структуры, соответствующий описанию детейла.</param> /// <param name="ldef">Описание языка, посредством которого в том числе идёт расшифровка.</param> public override void FromSimpleValue(object value, FunctionalLanguageDef ldef) { object[] obj = (object[])value; base.FromSimpleValue(obj[4], ldef); Type tp = null; try { tp = System.Type.GetType((string)obj[1], false); } catch (Exception) { if (ExtraTypeResolver != null) { tp = ExtraTypeResolver.Invoke((string)obj[1]); } if (tp == null) { throw; } } fView = GetPossibleDynamicView((string)obj[0], tp); ConnectMasterPorp = (string)obj[2]; if (obj[3] == null) { OwnerConnectProp = null; } else { OwnerConnectProp = (obj[3].GetType() == typeof(string)) ? new string[] { (string)obj[3] } } : (string[])obj[3]; fView.AddProperty(ConnectMasterPorp); } }