public static TTarget Map <TSource, TTarget>(TSource source) { var target = (TTarget)ExpressionReflector.CreateInstance(typeof(TTarget), ObjectPropertyConvertType.Cast); Map(source, target); return(target); }
public SqlBuilderBase CreateSqlBuilder() { if (_providerTypes == null) { _providerTypes = (from x in Assembly.GetExecutingAssembly().GetTypes() where x.BaseType == typeof(SqlBuilderBase) select x).ToList(); } var typeName = _provider.DatabaseType + ".SqlBuilder"; var source = from x in _providerTypes where x.FullName.EndsWith(typeName) select x; if (source.Count() > 1) { throw new NotSupportedException("找到了多个包含" + typeName + "的提供者类"); } var type = source.FirstOrDefault(); if (type == null) { throw new NotSupportedException("未找到提供者类:" + typeName); } object[] parameters = { _provider }; return((SqlBuilderBase)ExpressionReflector.CreateInstance(type, ObjectPropertyConvertType.Cast, parameters)); }
public static Dictionary <string, object> GetPropertyValues(object entity) { var dictionary = new Dictionary <string, object>(); foreach (var pair in ExpressionReflector.GetGetters(entity.GetType())) { dictionary.Add(pair.Key, pair.Value(entity)); } return(dictionary); }
public static void Map <TSource, TTarget>(TSource source, TTarget target) { var entityType = typeof(TTarget); var getters = ExpressionReflector.GetGetters(typeof(TSource)); var setters = ExpressionReflector.GetSetters(entityType); foreach (var str in getters.Keys) { if (setters.ContainsKey(str)) { setters[str](target, getters[str](source)); } } }
public BuilderFactory CreateSqlBuilderFactory() { if (string.IsNullOrWhiteSpace(ConfigManager.SqlBuilder)) { return(new BuilderFactory(this)); } if (_type == null) { char[] separator = { ',' }; var assInfos = ConfigManager.SqlBuilder.Split(separator); _type = Assembly.Load(assInfos[1]).GetTypes().FirstOrDefault(x => x.FullName == assInfos[0]); } object[] parameters = { this }; return ((BuilderFactory)ExpressionReflector.CreateInstance(_type, ObjectPropertyConvertType.Cast, parameters)); }
public static List <TObject> Map <TObject>(DataSet ds) where TObject : class, new() { var list = new List <TObject>(); var entityType = typeof(TObject); var setters = ExpressionReflector.GetSetters(entityType); var properties = ExpressionReflector.GetProperties(entityType); var table1 = ds.Tables[0]; foreach (DataRow row in ds.Tables[0].Rows) { var local = Activator.CreateInstance <TObject>(); foreach (var str in setters.Keys) { var obj2 = row[str]; if (obj2 != DBNull.Value) { var propertyType = properties[str].PropertyType; var underlyingType = Nullable.GetUnderlyingType(propertyType); if (underlyingType == null) { underlyingType = propertyType; } if (underlyingType.IsEnum) { obj2 = Enum.Parse(underlyingType, Convert.ToString(obj2)); } else { obj2 = Convert.ChangeType(obj2, underlyingType); } setters[str](local, obj2); } } list.Add(local); } return(list); }
public static IList Map(Type objectType, DataSet ds, ObjectPropertyConvertType convertType) { var list = (IList)Activator.CreateInstance(ReflectorConsts.ListObjectType); var setters = ExpressionReflector.GetSetters(objectType); var properties = ExpressionReflector.GetProperties(objectType); var table1 = ds.Tables[0]; foreach (DataRow row in ds.Tables[0].Rows) { object obj2 = null; if (objectType.IsSealed) { var list2 = new List <object>(); foreach (DataColumn column in ds.Tables[0].Columns) { var item = row[column]; if (item == DBNull.Value) { item = null; } list2.Add(item); } if (TypeHelper.IsValueType(objectType)) { obj2 = list2[0]; } else { obj2 = ExpressionReflector.CreateInstance(objectType, convertType, list2.ToArray()); } } else { obj2 = ExpressionReflector.CreateInstance(objectType, convertType); foreach (DataColumn column2 in ds.Tables[0].Columns) { var obj4 = row[column2]; if (obj4 != DBNull.Value) { var info = properties[column2.ColumnName]; if (info != null) { var propertyType = info.PropertyType; var underlyingType = Nullable.GetUnderlyingType(propertyType); if (underlyingType == null) { underlyingType = propertyType; } if (underlyingType.IsEnum) { obj4 = Enum.Parse(underlyingType, Convert.ToString(obj4)); } else { obj4 = Convert.ChangeType(obj4, underlyingType); } setters[column2.ColumnName](obj2, obj4); } } } } list.Add(obj2); } return(list); }
public static IList Map(Type type, IDataReader reader) { return(ExpressionReflector.GetDataReaderMapeer(type, reader)(reader)); }