internal static object GetValue(object value, System.Type type) { if (value == System.DBNull.Value) { value = null; } System.Type type2 = type; object result; if (value != null && EntityFactory.IsPrimitiveType(type, out type2)) { result = EntityFactory.ChangeType(value, type2); } else if (value != null && type2.IsEnum && !value.GetType().IsEnum) { result = System.Enum.ToObject(type2, value); } else if (value == null && type2.IsSubclassOf(typeof(System.ValueType))) { result = EntityFactory.GetDefaultValue(type); } else { result = value; } return(result); }
private static TData GetEntityData <TData>(object entity, System.Type entityType, Action <TData, string, object> action) where TData : class, new() { TData result; if (entity == null) { result = default(TData); } else { TData tData = System.Activator.CreateInstance <TData>(); EntityClassAttribute entityClassAttribute = JavaScriptSerializer.GetEntityClassAttribute(entityType); System.Reflection.PropertyInfo[] properties = entityType.GetProperties(); System.Reflection.PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { System.Reflection.PropertyInfo propertyInfo = array[i]; string propertyKey = JavaScriptSerializer.GetPropertyKey(propertyInfo, entityClassAttribute); object value = propertyInfo.GetValue(entity, null); if (value == null) { action(tData, propertyKey, value); } else { System.Type propertyType = propertyInfo.PropertyType; if (propertyType.IsGenericType) { if (EntityFactory.IsIList(propertyType)) { System.Type type = propertyType.GetGenericArguments()[0]; if (type.IsClass) { System.Collections.IList entites = value as System.Collections.IList; System.Collections.Generic.IList <TData> entityDatas = EntityFactory.GetEntityDatas <TData>(entites, type, action); action(tData, propertyKey, entityDatas); } } } else if (!EntityFactory.IsPrimitiveType(propertyInfo.PropertyType)) { action(tData, propertyKey, EntityFactory.GetEntityData <TData>(value, propertyInfo.PropertyType, action)); } else { action(tData, propertyKey, value); } } } result = tData; } return(result); }
private static object GetEntity <TData>(TData data, System.Type entityType, Func <TData, string, object> func) where TData : class { object result; if (data == null) { result = null; } else { EntityClassAttribute entityClassAttribute = JavaScriptSerializer.GetEntityClassAttribute(entityType); System.Reflection.PropertyInfo[] properties = entityType.GetProperties(); object obj = System.Activator.CreateInstance(entityType); System.Reflection.PropertyInfo[] array = properties; for (int i = 0; i < array.Length; i++) { System.Reflection.PropertyInfo propertyInfo = array[i]; System.Reflection.MethodInfo setMethod = propertyInfo.GetSetMethod(); if (!(setMethod == null)) { string propertyKey = JavaScriptSerializer.GetPropertyKey(propertyInfo, entityClassAttribute); System.Type propertyType = propertyInfo.PropertyType; object value = EntityFactory.GetValue(func(data, propertyKey), propertyType); if (value != null) { if (propertyType.IsGenericType) { if (EntityFactory.IsIList(propertyType)) { System.Type type = propertyType.GetGenericArguments()[0]; propertyInfo.SetValue(obj, EntityFactory.GetEntities <TData>(value as System.Collections.IEnumerable, type, func), null); } } else if (!EntityFactory.IsPrimitiveType(propertyType)) { propertyInfo.SetValue(obj, EntityFactory.GetEntity <TData>(value as TData, propertyType, func), null); } else { setMethod.Invoke(obj, new object[] { value }); } } } } result = obj; } return(result); }
internal static bool IsPrimitiveType(System.Type type) { System.Type type2; return(EntityFactory.IsPrimitiveType(type, out type2)); }