首页 > 解决方案 > 使用模板和创建冲突来创建人员对象

问题描述

我有一个人物模型

public class Person
{
   public int Id { get; set; }

   public string Name { get; set; }
 
   public string Gender { get; set; }

   public string Age { get; set; }
}

我有一个 PersonTemplate 模型

public class PersonTemplate
{
   public string Name { get; set; }
 
   public string Gender { get; set; }

   public int Age { get; set; }
}

假设我有两个具有这些值的 PersonTemplate:

var personTemplateOne = new PersonTemplate {
 Name = "",
 Gender = "Male",
 Age = 18
};

var personTemplateTwo = new PersonTemplate {
 Name = "",
 Gender = "Female",
 Age = 16
}

我想使用我创建的两个 PersonTemplate 并将其应用于

var person = new Person();

这两个模板具有 Gender 和 Age 属性的值。我想输出两个模板之间存在冲突,并让用户选择它将在每个字段上使用的模板。最好的方法是什么?

标签: c#asp.net-mvclinq

解决方案


你好最好的方法是反射法。但您也可以创建一个函数,将两个对象作为参数进行比较,并将它们的属性与输出列表进行比较,并输出有冲突的列表。

函数列表比较(PersonTemplate p1,PersonTemolate p2){ 使用 foreach 获取属性,然后从 p1 和 p2 获取值。

如果相同没问题,如果不是在列表中添加冲突...

}

但我找到了一个现成的解决方案,可以帮助您进行反思:Getting Difference Between Two Objects With Same Properties

此外,您还必须更改您的 class Person => class Person : PersonTemplate 和 class person 现在将只有 id 属性。所以现在你可以在 Person 中插入一个 PersonTemplate 类


推荐阅读