最近工作的时候遇到一个问题,根据Web端接收到的对象obj1,更新对应的对象值ogj2。先判断obj1中属性值是否为null,
若不等于null,则更新obj2中对应属性值;若等于null,则保持obj2中对应属性值不变。
先创建Student Class:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Property 7 { 8 public class Student 9 { 10 public string Name { get; set; } 11 12 public string number { get; set; } 13 14 public string School {get;set;} 15 16 public string Score { get; set; } 17 } 18 }
方法实现:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 namespace Property 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Student std1 = new Student(); 13 std1.Name = "Zhang San"; 14 std1.number = "1001"; 15 std1.School = "Jiangnan University"; 16 std1.Score = "87.98"; 17 18 Student std2 = new Student(); 19 std2.Name = "Li Si"; 20 std2.Score = "98.98"; 21 22 Console.WriteLine("Before:"); 23 foreach (System.Reflection.PropertyInfo p in std1.GetType().GetProperties()) 24 { 25 Console.WriteLine("{0}: {1}", p.Name, p.GetValue(std1,null)); 26 27 } 28 29 foreach (System.Reflection.PropertyInfo p in std2.GetType().GetProperties()) 30 { 31 //Console.WriteLine("{0}: {1}", p.Name, p.GetValue(std2, null)); 32 if (p.GetValue(std2, null) != null) 33 p.SetValue(std1, p.GetValue(std2, null), null); 34 } 35 Console.WriteLine("After:"); 36 foreach (System.Reflection.PropertyInfo p in std1.GetType().GetProperties()) 37 { 38 Console.WriteLine("{0}: {1}", p.Name, p.GetValue(std1, null)); 39 40 } 41 Console.ReadKey(); 42 43 } 44 } 45 }
结果:
2016-04-30