c# - 使用模板和创建冲突来创建人员对象
问题描述
我有一个人物模型
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 属性的值。我想输出两个模板之间存在冲突,并让用户选择它将在每个字段上使用的模板。最好的方法是什么?
解决方案
你好最好的方法是反射法。但您也可以创建一个函数,将两个对象作为参数进行比较,并将它们的属性与输出列表进行比较,并输出有冲突的列表。
函数列表比较(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 类
推荐阅读
- apache-spark - 使用表格数据在 pySpark 中重新采样
- c# - 如何保持客户端套接字连接打开并在控制台应用程序中发送/接收多条消息
- javascript - 如何在重置其他两个的文本时更改选中的单选按钮元素上的文本?
- javascript - 请求时如何使用 Multer 上传单个图像。使用 Postman 测试时文件总是空的?
- mongodb - 如何在 Mongodb 的同一查询中使用 dept 和 $arrayElemAt?
- sql - Google BigQuery 根据开始/结束日期按日期确定历史“活动”状态
- javascript - 使用 JavaScript 或 Jquery 创建模式
- linux - 错误:在安装avog2s的make过程中ld返回1退出状态
- flutter - 当应用程序以颤振退出时,重复通知不起作用
- python - SELECT EXISTS 检查行是否存在于另一个表中