Example #1
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="masterObj"></param>
 public DetailArrayOfObjectType(FunctionalLanguageDef masterObj)
     : base(typeof(ObjectType), masterObj)
 {
 }
Example #2
0
        /// <summary>
        /// вместо десериализации (вполне может выдать Exception, если тип переменной не будет найден в ldef или Type.GetType((string[])value[0]), так что try-catch снаружи крайне рекомендуется)
        /// </summary>
        /// <param name="value">Массив в который закручен наш VariableDef</param>
        /// <param name="ldef">Определение языка</param>
        public virtual void FromSimpleValue(object value, FunctionalLanguageDef ldef)
        {
            var vals = (string[])value;

            switch (vals[0])
            {
            case "Int32":
                vals[0] = "System.Int32";
                break;
            }

            Type = ldef.GetObjectType(vals[0]);
            //Шлыков
            if (Type == null)
            {
                if (string.IsNullOrEmpty(vals[0]))
                {
                    vals[0] = "System.String";
                }

                Type tp = null;

                try
                {
                    tp = System.Type.GetType(vals[0], false);
                }
                catch (Exception)
                {
                    if (ExtraTypeResolver != null)
                    {
                        tp = ExtraTypeResolver.Invoke(vals[0]);
                    }
                }

                //Братчиков 09.12.2008 Баг при десереализации
                if (tp == null)
                {
                    string s = vals[0].ToLower();
                    switch (s)
                    {
                    case "nullabledatetime":
                        tp = System.Type.GetType("ICSSoft.STORMNET.UserDataTypes.NullableDateTime,ICSSoft.STORMNET.UserDataTypes");
                        break;

                    case "nullabledecimal":
                        tp = System.Type.GetType("ICSSoft.STORMNET.UserDataTypes.NullableDecimal,ICSSoft.STORMNET.UserDataTypes");
                        break;

                    case "nullableint":
                        tp = System.Type.GetType("ICSSoft.STORMNET.UserDataTypes.NullableInt,ICSSoft.STORMNET.UserDataTypes");
                        break;

                    case "keyguid":
                        tp = System.Type.GetType("ICSSoft.STORMNET.KeyGen.KeyGuid,ICSSoft.STORMNET.DataObject");
                        break;

                    default: throw new Exception(string.Format("Невозможно найти тип: {0}", vals[0]));
                    }
                }
                //Братчиков 09.12.2008 Баг при десереализации
                Type = new ObjectType(tp.AssemblyQualifiedName, tp.Name, tp);
                ldef.Types.AddObject(Type);
            }

            StringedView = vals[1];
            if (vals.Length > 2)
            {
                Caption = vals[2];
            }
            if (Caption == null)
            {
                Caption = StringedView;
            }
        }
Example #3
0
 /// <summary>
 /// constructor
 /// </summary>
 /// <param name="masterObj"></param>
 public DetailArrayOfFunctionDef(FunctionalLanguageDef masterObj)
     : base(typeof(FunctionDef), masterObj)
 {
 }
Example #4
0
 ///<summary>
 /// Определение переменной в ограничении (обычно указывает на атрибут в объекте)
 ///</summary>
 ///<param name="baseType"></param>
 ///<param name="property"></param>
 ///<param name="ldef"></param>
 public VariableDef(Type baseType, string property, FunctionalLanguageDef ldef) :
     base(ldef.GetObjectTypeForNetType(Information.GetPropertyType(baseType, property)), property, property)
 {
     ldef.Variables.AddObject(this);
 }