?目錄
1.適用于創建實體的時候從一個實體作為數據源賦值
2.適用于沒有創建實體,兩個實體之間數據的轉換
1.適用于創建實體的時候從一個實體作為數據源賦值
/// <summary>
/// 反射實現兩個類的對象之間相同屬性的值的復制
/// 適用于初始化新實體
/// </summary>
/// <typeparam name="D">返回的實體</typeparam>
/// <typeparam name="S">數據源實體</typeparam>
/// <param name="s">數據源實體</param>
/// <returns>返回的新實體</returns>
public static D Mapper<D, S>(S s)
{D d = Activator.CreateInstance<D>(); //構造新實例try{var Types = s.GetType();//獲得類型 var Typed = typeof(D);foreach (PropertyInfo sp in Types.GetProperties())//獲得類型的屬性字段 {foreach (PropertyInfo dp in Typed.GetProperties()){if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name!= "Error" && dp.Name != "Item")//判斷屬性名是否相同 {dp.SetValue(d, sp.GetValue(s, null), null);//獲得s對象屬性的值復制給d對象的屬性 }}}}catch (Exception ex){throw ex;}return d;
}
2.適用于沒有創建實體,兩個實體之間數據的轉換
/// <summary>
/// 反射實現兩個類的對象之間相同屬性的值的復制
/// 適用于沒有新建實體之間
/// </summary>
/// <typeparam name="D">返回的實體</typeparam>
/// <typeparam name="S">數據源實體</typeparam>
/// <param name="d">返回的實體</param>
/// <param name="s">數據源實體</param>
/// <returns></returns>
public static D MapperToModel<D, S>(D d,S s)
{try{var Types = s.GetType();//獲得類型 var Typed = typeof(D);foreach (PropertyInfo sp in Types.GetProperties())//獲得類型的屬性字段 {foreach (PropertyInfo dp in Typed.GetProperties()){if (dp.Name == sp.Name && dp.PropertyType == sp.PropertyType && dp.Name != "Error" && dp.Name != "Item")//判斷屬性名是否相同 {dp.SetValue(d, sp.GetValue(s, null), null);//獲得s對象屬性的值復制給d對象的屬性 }}}}catch (Exception ex){throw ex;}return d;
}