我有2个具有属性的对象如下:
对象1:
人
对象2:
PersonRule
PersonRule由UI驱动,该UI设置人员规则(也可以设置多个),并且用户说出规则中应该包含的名称,位置和年龄。如果此人具有相同的属性值,则应将此规则与人匹配。
我可以进行简单的相等检查,但是将来也可能会将新属性添加到人员规则,例如personaddress。然后我需要通过考虑人员地址来检查规则是否与人匹配。
有没有办法可以构建匹配personrule与person属性的所有属性之类的东西,这样我就不需要在新属性添加到规则时进行更改了?当然这是假设相应的属性在person对象中可用。
谢谢, -Mike
答案 0 :(得分:8)
您可以使用其中一个可用的对象 - 对象映射器库,如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);
答案 1 :(得分:0)
您似乎正在寻找reflection,请参阅此示例问题: