1.创建用于测试验证的实体类
class Model {
public string Test1 { get; set; }
public string Test2 { get; set; }
public string Test3 { get; set; }
}
2.创建该类的两个对象,用于后面进行比较、属性复制
Model model = new Model();
Model model2 = new Model() {Test1 = "test" };
3.给model对象的属性赋值,这里我们采用非常规方法,通过遍历属性值,来赋值
PropertyInfo[] propertys = model.GetType().GetProperties(); //获取model的所有公共属性
int index = 0;
foreach (PropertyInfo info in propertys) {//遍历属性,给对象属性赋值
info.SetValue(model,"test" + index);
index++;
}
4.打印输出model对象,遍历获取对象属性,验证属性赋值是否成功
PrintValue(model,label1);
private void PrintValue(Model model, Label label) {
PropertyInfo[] propertys = model.GetType().GetProperties();
foreach (PropertyInfo info in propertys)
{
string name = info.Name;
string value = info.GetValue(model).ToString();
label.Content += name + ":" + value + "\n";
}
}
输出结果:

5.通过比较model2与model属性值的差异,将model属性叠加复制给model2
PropertyInfo[] propertys = model.GetType().GetProperties();
foreach (PropertyInfo info in propertys) {
if (info.GetValue(model2) == null)
{
info.SetValue(model2, info.GetValue(model).ToString());
}
else {
info.SetValue(model2, info.GetValue(model2).ToString() + "," + info.GetValue(model).ToString());
}
}
6.打印model2,输出结果验证
PrintValue(model2,label2);
输出结果:

7.将model2转换为json字符串
string str = JsonConvert.SerializeObject(model2);
输出结果:

