http://blog.csdn.net/u013093547/article/details/53584591
今天在拷貝對象的時候,看着代碼實在是有點煩,一堆一樣的代碼,還是找找有沒有直接反射拷貝不同對象相同屬性的值
百度了一下,結果第二個博客就是,地址就是最上面的鏈接地址
其中主要的就是下面這段代碼了

1 /// <summary> 2 /// 傳入類型B的對象b,將b與a相同名稱的值進行賦值給創建的a中 3 /// </summary> 4 /// <typeparam name="A">類型A</typeparam> 5 /// <typeparam name="B">類型B</typeparam> 6 /// <param name="b">類型為B的參數b</param> 7 /// <returns>拷貝b中相同屬性的值的a</returns> 8 public static A Mapper<A, B>(B b) 9 { 10 A a = Activator.CreateInstance<A>(); 11 try 12 { 13 Type Typeb = b.GetType();//獲得類型 14 Type Typea = typeof(A); 15 foreach (PropertyInfo sp in Typeb.GetProperties())//獲得類型的屬性字段 16 { 17 foreach (PropertyInfo ap in Typea.GetProperties()) 18 { 19 if (ap.Name == sp.Name)//判斷屬性名是否相同 20 { 21 ap.SetValue(a, sp.GetValue(b, null), null);//獲得b對象屬性的值復制給a對象的屬性 22 } 23 } 24 } 25 } 26 catch (Exception ex) 27 { 28 throw ex; 29 } 30 return a; 31 }

1 /// <summary> 2 /// 傳入類型A的對象a,類型B的對象b,將b和a相同名稱的值進行賦值給a 3 /// </summary> 4 /// <typeparam name="A"></typeparam> 5 /// <typeparam name="B"></typeparam> 6 /// <param name="a"></param> 7 /// <param name="b"></param> 8 public static void Mapper<A, B>(B b,ref A a) 9 { 10 try 11 { 12 Type Typeb = b.GetType();//獲得類型 13 Type Typea = typeof(A); 14 foreach (PropertyInfo sp in Typeb.GetProperties())//獲得類型的屬性字段 15 { 16 foreach (PropertyInfo ap in Typea.GetProperties()) 17 { 18 if (ap.Name == sp.Name)//判斷屬性名是否相同 19 { 20 ap.SetValue(a, sp.GetValue(b, null), null);//獲得b對象屬性的值復制給a對象的屬性 21 } 22 } 23 } 24 } 25 catch (Exception ex) 26 { 27 throw ex; 28 } 29 }