/// <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="func"></param> private void SyncParams(FunctionalLanguage.Function func) { for (int i = 0; i < func.Parameters.Count; i++) { object o = func.Parameters[i]; if (o is FunctionalLanguage.Function) { SyncParams(o as FunctionalLanguage.Function); } else if (o is ParameterDef) { ParameterDef op = o as ParameterDef; foreach (ParameterDef pd in Parameters) { if (pd.ParamName == op.ParamName) { func.Parameters[i] = pd; break; } } } } }