如何将对象中的字段动态映射到另一个对象
本文关键字:映射 动态 一个对象 字段 对象 | 更新日期: 2023-09-27 18:36:16
我有 2 个对象,其属性如下:
对象 1:
人
- 名字
- 位置
- 年龄
- 地址
对象 2:
人规则
- 人名
- 人员位置
- 人士
PersonRule 由 UI 驱动,该 UI 设置人员规则(也可以设置多个),用户说出规则中应包含的名称、位置、年龄。如果人员具有相同的属性值,则应将此规则与人员匹配。
我可以做一个简单的相等性检查,但是将来也有可能将新属性添加到人员规则中,例如 personaddress。然后,我需要通过考虑人员地址来检查规则是否与人员匹配。
有没有办法构建类似将 personrule 的所有属性与人员属性匹配的东西,这样当新属性添加到规则中时我就不需要进行更改?当然,这是假设相应的属性在 person 对象中可用。
谢谢-话筒
您可以使用可用的对象到对象映射器库之一,如 AutoMapper 或 EmitMapper。他们将负责将数据从 Person 实例复制到 PersonRule 实例,以便与另一个 PersonRule 实例进行比较。例如,使用 EmitMapper,您的代码可能如下所示:
var config = new DefaultMapConfig().MatchMembers((m1, m2) => "Person" + m1 == m2);
ObjectMapperManager.DefaultInstance
.GetMapper<Person, PersonRule>(config)
.Map(person, personRule);
您似乎正在寻找反射,请参阅此示例问题:
如何获取类的属性列表?