TABSYSMEMBER member = new TABSYSMEMBER();//空的实体对象
TABSYSMEMBER oldMember = new TABSYSMEMBER();//非空实体对象
PropertyInfo[] p = member.GetType().GetProperties();
PropertyInfo[] ps1 = oldMember.GetType().GetProperties();
int value = 1;
//foreach (PropertyInfo p in ps)
//{
// value++;
// p.SetValue(m, value.ToString(), null);
//}
///下面将非空对象赋值
foreach (PropertyInfo p1 in ps1)
{
value++;
p1.SetValue(oldMember, "aa"+value.ToString(), null);
}
//循环空实体对象
foreach (PropertyInfo pi in p)
{
//得到空实体对象的属性值---此句是重点
object o = member.GetType().GetProperty(pi.Name).GetValue(member, null);
//得到非空实体对象对应属性的值
object o1 = oldMember.GetType().GetProperty(pi.Name).GetValue(oldMember, null);
//如果空实体对象该属性值为空
if (o == null)
{
//则把非空实体对象的值赋给空实体对象的属性值
pi.SetValue(member, o1, null);
}
}
说明:由于项目业务需要,需提供一个接口,功能为:由外部传来XML文档,解析成为实体对象,此实体对象有些值可能为空,需要把数据库查出来的旧数据赋上去,然后更新。
提供了两个实体对象比较,为空并赋旧数据的功能。
oldMember.GetType().GetProperty(pi.Name).GetValue(oldMember, null);
此句是核心。