http://blog.csdn.net/u013093547/article/details/53584591
今天在拷贝对象的时候,看着代码实在是有点烦,一堆一样的代码,还是找找有没有直接反射拷贝不同对象相同属性的值
百度了一下,结果第二个博客就是,地址就是最上面的链接地址
其中主要的就是下面这段代码了
1 ///
2 /// 传入类型B的对象b,将b与a相同名称的值进行赋值给创建的a中
3 ///
4 /// 类型A
5 /// 类型B
6 /// 类型为B的参数b
7 /// 拷贝b中相同属性的值的a
8 public static A Mapper(B b)
9 {
10 A a = Activator.CreateInstance();
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 }
创建A拷贝B
1 ///
2 /// 传入类型A的对象a,类型B的对象b,将b和a相同名称的值进行赋值给a
3 ///
4 ///
5 ///
6 ///
7 ///
8 public static void Mapper(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 }
传入A拷贝B
fighting
Original: https://www.cnblogs.com/danlis/p/7723280.html
Author: Danlis
Title: C#利用反射实现两个类的对象之间相同属性的值的复制
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543115/
转载文章受原作者版权保护。转载请注明原作者出处!