Ejemplo n.º 1
0
 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);
        }
    }