Beispiel #1
0
        /// <summary>Получить тип свойства</summary>
        /// <param name="obj">Объект у которого нужно узнать тип</param>
        /// <param name="propertyName">Имя свойства</param>
        /// <returns>Тип свойства</returns>
        public static Type GetProperyType(dbObject obj, string propertyName)
        {
            Type         type         = obj.GetType();
            PropertyInfo propertyInfo = type.GetProperty(propertyName);

            return(propertyInfo.PropertyType);
        }
Beispiel #2
0
        /// <summary>Установить значение</summary>
        /// <param name="obj">Объект для которого устанавливаеться значение</param>
        /// <param name="propertyName">Имя свойства</param>
        /// <param name="value">Значение</param>
        /// <param name="isValid">Правильный ли формат значения</param>
        /// <returns>Значение</returns>
        public static object SetValue(dbObject obj, string propertyName, object value, out bool isValid)
        {
            isValid = true;
            Type         type     = obj.GetType();
            PropertyInfo property = type.GetProperty(propertyName);

            if (property != null)
            {
                if (property.PropertyType == typeof(long))
                {
                    value = Convert.ToInt64(value);
                }
                else if (property.PropertyType == typeof(int))
                {
                    value = Convert.ToInt32(value);
                }
                else if (property.PropertyType == typeof(double))
                {
                    value = Convert.ToDouble(value);
                }
                else if (property.PropertyType == typeof(DateTime))
                {
                    try
                    {
                        value = Convert.ToDateTime(value);
                    }
                    catch
                    {
                        value   = DateTime.MaxValue;
                        isValid = false;
                    }
                }
                else if (property.PropertyType.IsEnum)
                {
                    value = Enum.Parse(property.PropertyType, value.ToString(), false);
                }
                else if (property.PropertyType == typeof(string))
                {
                    value = value.ToString().TrimEnd();
                }

                property.SetValue(obj, value, null);
            }

            obj.IsModified = true;
            return(value);
        }
Beispiel #3
0
        /// <summary>Копировать объект</summary>
        /// <param name="source">Объект-исходник</param>
        /// <returns>Скопированный объект</returns>
        public static dbObject Copy(dbObject source)
        {
            if (source != null)
            {
                Type           type          = source.GetType();
                dbObject       copy          = (dbObject)Activator.CreateInstance(type);
                PropertyInfo[] propertyInfos = type.GetProperties();

                foreach (PropertyInfo property in propertyInfos)
                {
                    dbFieldAtt attributes = Attribute.GetCustomAttribute(property, typeof(dbFieldAtt)) as dbFieldAtt;

                    if (attributes != null)
                    {
                        object value = property.GetValue(source, null);
                        property.SetValue(copy, value, null);
                    }
                }

                ISynced synced = copy as ISynced;
                if (synced != null)
                {
                    synced.IsSynced = false;
                }

                IBarcodeOwner barcode = copy as IBarcodeOwner;
                if (barcode != null)
                {
                    barcode.BarCode = string.Empty;
                }

                copy.SyncRef = string.Empty;
                copy.Id      = 0;

                return(copy);
            }

            return(null);
        }